/*
This exmple program provides a trivial server program that listens for TCP
connections on port 9995.  When they arrive, it writes a short message to
each client connection, and closes each connection once it is flushed.

Where possible, it exits cleanly in response to a SIGINT (ctrl-c).
*/

#include "asynevent.h"
#include "tcpserver.h"
#include "tcpclient.h"
#include "udpserver.h"
#include "udpclient.h"
#include "ntdtime.h"
#include "getopt.h"
#include "bwprobe.h"
#include "port.h"
#include "dumpsender.h"

LOG4CPLUS_IMPLEMENT( g_logger, "main" );


void RunServer(uint16 port)
{
	TCPServer * pTcpServer = new TCPServer;
	bool ret = pTcpServer->Listen(port);

	UDPServer * pUdpServer = new UDPServer;
	ret = pUdpServer->Listen(port);
	assert(ret);
}

void RunClient(bool bUdp, const std::string& host, uint16 port, uint32 ratelimit)
{
	if( bUdp ){
		UDPClient * pUdpClient = new UDPClient;
		pUdpClient->SetRateLimit(ratelimit);//Bytes/s
		pUdpClient->Connect(host, port);
	}else{
		TCPClient * pTcpClient = new TCPClient;
		//pTcpClient->SetRateLimit(ratelimit);
		pTcpClient->Connect(host, port);
	}


}

#include "trend.h"

void TestTrend()
{
	SpearmanTrendDetector trend;
	
	//uint64 a[] = {8513,8512,8512,8513,8512,8512,8513,8512,8512,8512,8512,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8512,8513,8512,8512,8512,8512,8512,8513,8512,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8513,8513,8512,8512,8513,8512,8512,8513,8512,8512,8513,8513,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8513,8513,8512,8512,8513,8512,8512,8512,8512,8512,8513,8513,8512,8512,8512,8512,8512,8513,8512,8512,8513,8512,8512,8513,8513,8512,8512,8512,8512,8512,8512,8512,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8513,8512,8512,8512,8513,8512,8513,8513,8513,8513,8514,8513,8514,8514,8515,8514,8515,8515,8515,8515,8516,8515,8516,8516,8517,8516,8517,8517,8517,8517,8518,8517,8518,8518,8517,8518,8518,8519,8518,8519,8520,8519,8520,8520,8520,8520,8521,8521,8521,8521,8522,8521,8522,8522,8522,8522,8523,8523,8523,8523,8524,8523,8524,8524,8524,8524,8525,8525,8525,8525,8526,8525,8526,8526,8526,8526,8527,8526,8527,8527,8528,8527,8528,8528,8527,8528,8528,8528,8528,8529,8529,8529,8529,8530,8530,8530,8530,8530,8531,8531,8532,8531,8532,8532,8532,8532,8533,8532,8533,8533,8534,8533,8534,8534,8534,8534,8534,8534,8534,8535,8534,8535,8535,8536,8535,8536,8536,8536,8536,8537,8536,8537,8538,8538,8538,8538,8538,8538,8538,8539,8538,8539,8539,8540,8539,8540,8540,8540,8540,8541,8540,8541,8541,8541,8541,8542,8542,8542,8542,8543,8542,8543,8543,8543,8543,8544,8544,8544,8544,8545,8544,8545,8546,8545,8546,8546,8546,8546,8546,8547,8546,8547,8547,8547,8547,8548,8547,8548,8548,8549,8548,8549,8549,8549,8549,8550,8549,8550,8550,8551,8550,8551,8551,8551,8551,8552,8551,8552,8553,8553,8552,8553,8553,8553};

	//uint64 a[] = {674203,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204,674204};
	
	//uint64 a[] = {4605,4605,4605,4605,4606,4605,4605,4605,4605,4606,4606,4605,4605,4605,4606,4606,4606,4606,4606,4606,4606,4606,4606,4607,4607,4606,4606,4606,4607,4607,4607,4607,4606,4607,4607,4607,4607,4607,4607,4607,4607,4607,4607,4607,4608,4608,4607,4607,4607,4608,4608,4608,4607,4608,4608,4608,4608,4608,4609,4608,4608,4608,4608,4609,4609,4609,4608,4608,4608,4609,4610,4610,4610,4609,4609,4609,4609,4609,4609,4610,4609,4609,4609,4610,4610,4610,4610,4609,4610,4610,4610,4610,4610,4610,4610,4610,4610,4610,4610,4611,4611,4610,4610,4610,4611,4611,4611,4611,4611,4611,4611,4611,4611,4612,4611,4611,4611,4611,4612,4612,4612,4611,4611,4612,4612,4612,4612,4612,4611,4612,4612,4612,4612,4612,4613,4612,4612,4612,4612,4613,4613,4613,4612,4612,4612,4613,4613,4612,4613,4613,4613,4613,4613,4614,4613,4613,4613,4613,4613,4614,4614,4613,4613,4613,4613,4614,4614,4614,4613,4614,4614,4614,4614,4614,4615,4614,4614,4614,4614,4614,4615,4614,4614,4614,4614,4615,4615,4615,4614,4614,4615,4615,4615,4615,4616,4615,4615,4615,4615,4616,4616,4616,4615,4615,4616,4616,4616,4616,4617,4616,4616,4616,4616,4617,4617,4617,4616,4616,4616,4617,4617,4617,4616,4616,4617,4617,4617,4617,4617,4616,4617,4616,4616,4616,4617,4617,4617,4616,4616,4616,4617,4617,4617,4617,4616,4617,4617,4617,4617,4617,4618,4617,4617,4617,4617,4618,4617,4617,4617,4618,4618,4618,4618,4617,4618,4618,4618,4618,4618,4619,4618,4618,4618,4618,4618,4619,4619,4618,4618,4618,4619,4619,4619,4619,4618,4619,4619,4619,4619,4620,4620,4619,4619,4619,4620,4620,4620,4620,4619,4620,4620,4620,4620,4620,4620,4620,4620,4620,4621,4621,4621,4620,4620,4620,4621,4621,4621,4621,4620,4621,4621,4621,4621,4621,4621,4621,4621,4621,4621,4621,4622,4622,4621,4621,4622,4622,4622,4622,4622,4622,4622,4622,4622,4622,4623,4623,4622,4622,4622,4623,4623,4623,4623,4622,4622,4623,4623,4623,4623,4623,4623,4623,4619,4619,4620,4620,4619,4619,4619,4620,4620,4620,4619,4620,4620,4620,4620,4620,4620,4620,4620,4620,4620,4620,4621,4621,4620,4620,4620,4621,4621,4621,4621,4620,4620,4620,4621,4621,4621,4621,4621,4621,4621,4621,4621,4622,4622,4621,4621,4621,4621,4622,4622,4622,4621,4622,4622,4622,4622,4622,4623,4622,4622,4622,4622,4623,4623,4622,4622,4623,4623,4623,4623,4623,4622,4623,4623,4623,4623,4623,4624,4623,4623,4623,4623,4624,4624,4624,4623,4623,4624,4624,4624,4624,4624,4624,4624,4624,4624,4625,4625,4625,4624,4624,4625,4625,4625,4625,4625,4624,4625,4625,4625,4625,4626,4626,4625,4625,4625,4625,4626,4626,4626,4625,4625,4625,4626,4626,4626,4626,4626,4626,4626,4626,4626,4627,4626,4626,4626,4626,4626,4627,4627,4626,4626,4626,4627,4627,4627,4627,4626,4627,4627,4627,4627,4628,4628,4627,4627,4627,4628,4628,4628,4628,4627,4627,4628,4628,4628,4628,4628,4628,4628,4628,4628,4628,4629,4628,4628,4628,4629,4629,4629,4629,4628,4629,4629,4629,4629,4629,4629,4629,4629,4629,4629,4629,4629,4630,4629,4629,4629,4630,4630,4630,4630,4629,4630,4630,4630,4630,4630,4631,4630,4630,4630,4630,4630,4631,4631,4630,4630,4630,4631,4631,4631,4630,4630,4631,4631,4631,4631,4632,4631,4631,4631,4631,4632,4632,4632,4631,4631,4632,4632,4632,4632,4632,4632,4632,4632,4632};

	//uint64 a[] = {3447370,3447371,3447370,3447370,3447370,3447370,3447370,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447372,3447372,3447372,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447371,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447372,3447373,3447373,3447372,3447372,3447374,3447374,3447374,3447375,3447375,3447375,3447375,3447375,3447375,3447375,3447374,3447375,3447375,3447375,3447375,3447375,3447375,3447375,3447375,3447375,3447376,3447375,3447375,3447375,3447375,3447375,3447375,3447375,3447376,3447376,3447376,3447376,3447376,3447375,3447375,3447375,3447375,3447375,3447376,3447376,3447376,3447376,3447376,3447376,3447375,3447375,3447375,3447375,3447375,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447375,3447375,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447376,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447378,3447379,3447379,3447378,3447378,3447379,3447379,3447379,3447379,3447379,3447379,3447379,3447379,3447380,3447380,3447379,3447379,3447379,3447379,3447379,3447379,3447379,3447380,3447380,3447380,3447380,3447381,3447380,3447380,3447380,3447380,3447380,3447380,3447380,3447381,3447381,3447381,3447381,3447380,3447380,3447380,3447380,3447380,3447380,3447380,3447381,3447381,3447381,3447381,3447381,3447380,3447380,3447381,3447381,3447381,3447381,3447381,3447381,3447381,3447382,3447382,3447381,3447381,3447381,3447381,3447381,3447381,3447381,3447381,3447382,3447382,3447382,3447382,3447381,3447381,3447381,3447381,3447381,3447381,3447382,3447382,3447382,3447382,3447382,3447381,3447381,3447381,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447383,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447383,3447383,3447382,3447382,3447382,3447382,3447382,3447382,3447382,3447383,3447383,3447383,3447383,3447383,3447382,3447382,3447382,3447382,3447382,3447382,3447383,3447383,3447383,3447383,3447383,3447383,3447382,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447382,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447384,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447383,3447384,3447384,3447383,3447383,3447383,3447383,3447383,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447383,3447383,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447385,3447385,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447385,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447384,3447385,3447385,3447385,3447385,3447385,3447385,3447384,3447384,3447384,3447384,3447385,3447385,3447385,3447385,3447385,3447385,3447385,3447384,3447385,3447385,3447386,3447386,3447386,3447386,3447386,3447386,3447386,3447387,3447387,3447386,3447386,3447386,3447386,3447386,3447386,3447386,3447386,3447387,3447387,3447387,3447387,3447386,3447386,3447386,3447386,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447386,3447386,3447386,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447386,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447388,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447387,3447388,3447388,3447387,3447387,3447387,3447387,3447387,3447387,3447388,3447388,3447388,3447388,3447388,3447387,3447387,3447387,3447387,3447388,3447388,3447388,3447388,3447388,3447388,3447388,3447388,3447387,3447387,3447387,3447388,3447388,3447388,3447388,3447388,3447388,3447388,3447389,3447388,3447388,3447388,3447388,3447388,3447388,3447388,3447389,3447389,3447389,3447389,3447389,3447388,3447388,3447388,3447388,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447388,3447388,3447388,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447388,3447388,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447390,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447389,3447390,3447390,3447390,3447390,3447390,3447390,3447390,3447390,3447390,3447391,3447392,3447392,3447392,3447391,3447391,3447391,3447391,3447391,3447392,3447392,3447392,3447393,3447393,3447393,3447392,3447392,3447392,3447392,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447402,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447401,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447403,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447403,3447403,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447402,3447403,3447402,3447402,3447402,3447408,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447408,3447408,3447408,3447408,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447408,3447408,3447408,3447408,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447408,3447408,3447408,3447408,3447409,3447409,3447409,3447409,3447409,3447409,3447409,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447416,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447415,3447412,3447411,3447411,3447411,3447411,3447411,3447411,3447411,3447410,3447410,3447410,3447410,3447410,3447410,3447409,3447410,3447425,3447425,3447425,3447425,3447425,3447425,3447425,3447425,3447425};
	
	//uint64 a[] = {0,1,1,2,2,3,3,3,5,4,3,5,5};

	//uint64 a[] = {363267,363267,363267,363267,363267,363267,363267,363267,363267,363266,363267,363267,363267,363267,363267,363266,363267,363267,363266,363267,363267,363266,363267,363267,363269,363268,363268,363266,363267,363267,363267,363267,363267,363267,363267,363266,363267,363267,363269,363268,363268,363266,363267,363267,363266,363267,363267,363267,363267,363267,363267,363267,363267,363272,363271,363269,363273,363267,363272,363271,363277,363275,363275,363274,363273,363272,363272,363270,363270,363269,363268,363267,363267,363266,363267,363267,363267,363267};

	//uint64 a[] = {0,0,0,0,1,1,0};

	//uint64 a[] = {2114279,2114278,2114278,2114278,2114278,2114278,2114279,2114279,2114278,2114278,2114278,2114279,2114278,2114279,2114279,2114279,2114278,2114278,2114279,2114278,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114279,2114280,2114291,2114289,2114287,2114285,2114283,2114281,2114279,2114279,2114279,2114279,2114279,2114279,2114279};

	//uint64 a[] = {96451,96451,96450,96450,96449,96449,96449,96448,96447,96447,96447,96446,96448,96456,96457,96454,96457,96454,96456,96453,96453,96452,96452,96451,96451,96450,96450,96449,96452,96454,96460,96460,96459,96459,96458,96458,96457,96457,96456,96456,96455,96455,96454,96454,96457,96464,96464,96463,96463,96463,96463,96462,96462,96461,96461,96460,96460,96460,96459,96459,96468,96475,96474,96474,96473,96473,96473,96472,96472,96471,96471,96470,96470,96469,96469,96468,96472,96479,96479,96478,96478,96477,96477,96476,96476,96475,96475,96475,96474,96474,96473,96473,96478,96485,96484,96495,96487,96495,96486,96495,96486,96494,96495};

	//uint64 a[] = {12666497,12666497,12666497,12666497,12666497,12666498,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666498,12666498,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666496,12666495,12666495,12666494,12666494,12666493,12666492,12666491,12666490,12666489,12666488,12666489,12666489,12666488,12666488,12666488,12666488,12666488,12666489,12666489,12666489,12666488,12666488,12666488,12666488,12666488,12666488,12666488,12666488,12666488,12666488,12666488,12666489,12666489,12666489,12666488,12666488,12666488,12666488,12666489,12666489,12666489,12666488,12666489,12666489,12666489,12666490,12666489,12666489,12666489,12666489,12666489,12666491,12666492,12666492,12666491,12666491,12666491,12666491,12666491,12666491,12666491,12666491,12666491,12666491,12666490,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666488,12666488,12666488,12666489,12666489,12666489,12666489,12666489,12666489,12666488,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666489,12666488,12666487,12666486,12666486,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666484,12666484,12666484,12666484,12666484,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666485,12666484,12666484,12666484,12666484,12666485,12666485,12666484,12666484,12666484,12666484,12666483,12666483,12666482,12666481,12666480,12666479,12666479,12666478,12666479,12666479,12666479,12666478,12666477,12666476,12666476,12666477,12666476,12666476,12666476,12666476,12666476,12666475,12666476,12666476,12666476,12666476,12666476,12666476,12666475,12666476,12666476,12666476,12666476,12666476,12666476,12666476,12666477,12666476,12666475,12666474,12666473,12666472,12666471,12666471,12666470,12666469,12666468,12666468,12666467,12666467,12666467,12666467,12666466,12666466,12666466,12666466,12666467,12666467,12666467,12666466,12666466,12666466,12666466,12666467,12666467,12666467,12666467,12666466,12666466,12666466,12666467,12666467,12666467,12666466,12666467,12666467,12666466,12666466,12666465,12666464,12666463,12666462,12666461,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666459,12666458,12666458,12666457,12666457,12666457,12666458,12666458,12666458,12666458,12666457,12666457,12666457,12666458,12666458,12666457,12666468,12666468,12666468,12666469,12666470,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666469,12666469,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666470,12666470,12666470,12666469,12666469,12666469,12666470,12666469,12666469,12666469,12666469,12666469,12666468,12666468,12666468,12666468,12666468,12666468,12666467,12666467,12666468,12666468,12666468,12666468,12666468,12666467,12666467,12666468,12666468,12666468,12666468,12666468,12666467,12666467,12666470,12666469,12666468,12666468,12666468,12666467,12666467,12666468,12666468,12666468,12666468,12666468,12666467,12666467,12666468,12666467,12666466,12666465,12666465,12666465,12666465,12666466,12666466,12666478,12666477,12666476,12666475,12666474,12666474,12666474,12666473,12666472,12666471,12666470,12666470,12666469,12666468,12666467,12666466,12666465,12666465,12666466,12666466,12666466,12666466,12666465,12666465,12666465,12666466,12666466,12666466,12666465,12666465,12666465,12666465,12666466,12666466,12666466,12666468,12666468,12666468,12666468,12666469,12666469,12666468,12666468,12666468,12666468,12666468,12666469,12666469,12666468,12666468,12666468,12666481,12666480,12666480,12666479,12666478,12666477,12666476,12666475,12666474,12666474,12666473,12666472,12666472,12666472,12666472,12666472,12666473,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666473,12666472,12666472,12666472,12666472,12666472,12666473,12666473,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666471,12666470,12666469,12666468,12666467,12666467,12666466,12666466,12666466,12666465,12666464,12666464,12666463,12666462,12666462,12666461,12666460,12666459,12666459,12666459,12666459,12666460,12666459,12666459,12666459,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666459,12666473,12666472,12666472,12666471,12666470,12666469,12666468,12666467,12666466,12666466,12666465,12666464,12666463,12666462,12666461,12666460,12666459,12666459,12666459,12666459,12666459,12666459,12666460,12666459,12666459,12666459,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666464,12666463,12666462,12666462,12666461,12666460,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666460,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666459,12666460,12666459,12666459,12666459,12666459,12666459,12666459,12666463,12666462,12666461,12666460,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666459,12666458,12666458,12666459,12666458,12666458,12666458,12666458,12666458,12666457,12666459,12666458,12666457,12666456,12666456,12666457,12666456,12666456,12666470,12666470,12666484,12666483,12666483,12666483,12666484,12666484,12666484,12666485,12666484,12666483,12666484,12666484,12666484,12666484,12666483,12666483,12666483,12666484,12666484,12666484,12666484,12666491,12666490,12666489,12666489,12666488,12666487,12666487,12666486,12666485,12666484,12666484,12666487,12666486,12666485,12666484,12666483,12666483,12666484,12666484,12666488,12666488,12666488,12666488,12666488,12666489,12666488,12666488,12666488,12666488,12666488,12666488,12666489,12666489,12666488,12666496,12666496,12666496,12666495,12666496,12666496,12666496,12666496,12666500,12666500,12666500,12666501,12666501,12666501,12666500,12666500,12666500,12666500,12666500,12666501,12666501,12666500,12666500,12666500,12666500,12666500,12666500,12666501,12666501,12666501,12666500,12666500,12666500,12666500,12666501,12666501,12666501,12666508,12666507,12666508,12666507,12666508,12666508,12666508,12666508,12666507,12666507,12666507,12666508,12666508,12666508,12666508,12666508,12666508,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666508,12666507,12666508,12666508,12666508,12666508,12666508,12666507,12666507,12666508,12666508,12666508,12666508,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666507,12666507,12666507,12666507,12666507,12666507,12666508,12666507,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666507,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666508,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666507,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666507,12666507,12666507,12666507,12666507,12666508,12666508,12666507,12666507,12666507,12666507,12666506,12666506,12666505,12666504,12666503,12666503,12666502,12666501,12666501,12666500,12666499,12666499,12666498,12666497,12666497,12666497,12666496,12666496,12666496,12666496,12666496,12666495,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666496,12666497,12666496,12666496,12666496,12666496,12666496,12666495,12666496,12666496,12666496,12666496,12666496,12666497,12666497,12666498,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666496,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666498,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666497,12666497,12666497,12666497,12666497,12666507,12666507,12666509,12666509,12666509,12666508,12666508,12666508,12666509,12666509,12666509,12666509,12666509,12666509,12666508,12666509,12666512,12666512,12666511,12666511,12666511,12666511,12666512,12666512,12666512,12666511,12666511,12666511,12666511,12666512,12666512,12666512,12666512,12666512,12666511,12666511,12666511,12666510,12666509,12666509,12666509,12666509,12666509,12666510,12666510,12666509,12666509,12666509,12666509,12666510,12666510,12666509,12666510,12666509,12666509,12666509,12666510,12666509,12666508,12666507,12666506,12666506,12666505,12666506,12666506,12666506,12666506,12666505,12666505,12666505,12666506,12666506,12666506,12666506,12666506,12666505,12666505,12666506,12666506,12666506,12666505,12666505,12666505,12666505,12666506,12666506,12666506,12666506,12666505,12666505,12666505,12666506,12666506,12666506,12666506,12666505,12666505,12666505,12666506,12666506,12666506,12666506,12666505,12666505,12666505,12666506,12666506,12666506,12666506,12666505,12666507,12666507,12666508,12666508,12666508,12666508,12666507,12666507,12666507,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666507,12666507,12666507,12666507,12666508,12666508,12666508,12666508,12666507,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666507,12666508,12666508,12666508,12666508,12666507,12666507,12666509,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666510,12666511,12666511,12666510,12666510,12666510,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666513,12666512,12666512,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666513,12666512,12666512,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666513,12666513,12666513,12666513,12666513,12666512,12666513,12666512,12666511,12666511,12666510,12666509,12666509,12666508,12666507,12666506,12666505,12666504,12666503,12666503,12666502,12666502,12666501,12666500,12666499,12666498,12666498,12666498,12666497,12666496,12666495,12666494,12666493,12666493,12666492,12666491,12666490,12666489,12666488,12666488,12666488,12666487,12666486,12666485,12666485,12666485,12666485,12666486,12666486,12666486,12666485,12666485,12666485,12666485,12666486,12666486,12666485,12666485,12666485,12666485,12666485,12666486,12666486,12666486,12666486,12666485,12666485,12666485,12666486,12666486,12666486,12666486,12666485,12666485,12666485,12666486,12666486,12666486,12666485,12666485,12666485,12666485,12666485,12666484,12666483,12666482,12666481,12666480,12666480,12666481,12666481,12666481,12666481,12666480,12666481,12666481,12666481,12666481,12666481,12666481,12666480,12666480,12666480,12666479,12666479,12666478,12666477,12666476,12666475,12666475,12666474,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666471,12666470,12666470,12666469,12666469,12666469,12666468,12666468,12666468,12666469,12666469,12666469,12666469,12666468,12666468,12666468,12666469,12666469,12666469,12666469,12666469,12666468,12666468,12666469,12666469,12666469,12666469,12666468,12666468,12666468,12666469,12666469,12666468,12666467,12666466,12666466,12666465,12666465,12666464,12666463,12666462,12666461,12666461,12666461,12666462,12666462,12666461,12666461,12666461,12666461,12666461,12666462,12666462,12666461,12666461,12666461,12666461,12666471,12666471,12666471,12666474,12666473,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666474,12666473,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666473,12666473,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666473,12666474,12666474,12666474,12666474,12666473,12666473,12666473,12666474,12666474,12666473,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666473,12666473,12666473,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666474,12666474,12666474,12666474,12666474,12666473,12666474,12666473,12666473,12666473,12666473,12666473,12666488,12666488,12666487,12666486,12666485,12666484,12666483,12666483,12666483,12666482,12666481,12666480,12666479,12666478,12666477,12666477,12666476,12666475,12666474,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666487,12666486,12666485,12666484,12666483,12666482,12666482,12666481,12666480,12666479,12666478,12666477,12666476,12666476,12666475,12666474,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666474,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666486,12666485,12666484,12666483,12666482,12666481,12666481,12666480,12666479,12666478,12666477,12666476,12666475,12666475,12666474,12666473,12666472,12666471,12666470,12666469,12666467,12666466,12666464,12666464,12666462,12666461,12666461,12666460,12666459,12666459,12666459,12666459,12666459,12666459,12666458,12666459,12666459,12666459,12666459,12666458,12666458,12666458,12666459,12666459,12666459,12666458,12666459,12666459,12666458,12666459,12666458,12666458,12666458,12666458,12666458,12666458,12666459,12666458,12666458,12666458,12666458,12666458,12666457,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666457,12666458,12666458,12666458,12666458,12666458,12666457,12666458,12666459,12666458,12666458,12666458,12666458,12666458,12666457,12666459,12666458,12666458,12666458,12666457,12666457,12666457,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666458,12666457,12666456,12666456,12666456,12666456,12666456,12666456,12666456,12666455,12666455,12666456,12666460,12666459,12666458,12666457,12666456,12666456,12666456,12666456,12666456,12666456,12666456,12666455,12666456,12666460,12666459,12666458,12666458,12666457,12666456,12666459,12666458,12666457,12666457,12666456,12666457,12666456,12666456,12666459,12666458,12666458,12666469,12666469,12666468,12666468,12666468,12666467,12666467,12666466,12666465,12666465,12666466,12666466,12666466,12666466,12666466,12666465,12666465,12666466,12666466,12666466,12666465,12666465,12666465,12666465,12666466,12666468,12666467,12666466,12666465,12666464,12666463,12666464,12666463,12666466,12666465,12666464,12666464,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666462,12666463,12666463,12666463,12666463,12666463,12666463,12666462,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666462,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666463,12666462,12666462,12666462,12666463,12666463,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666465,12666464,12666465,12666464,12666464,12666463,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666463,12666464,12666465,12666464,12666465,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666465,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666466,12666465,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666463,12666464,12666464,12666464,12666464,12666464,12666464,12666464,12666465,12666464,12666463,12666462,12666461,12666460,12666459,12666459,12666458,12666457,12666456,12666456,12666455,12666454,12666455,12666454,12666453,12666452,12666451,12666451,12666451,12666452,12666452,12666452,12666452,12666451,12666451,12666451,12666452,12666452,12666452,12666452,12666451,12666451,12666451,12666452,12666452,12666452,12666452,12666451,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666459,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666459,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666460,12666461,12666461,12666460,12666460,12666460,12666460,12666460,12666461,12666460,12666460,12666460,12666460,12666468,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666474,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666473,12666473,12666473,12666473,12666473,12666473,12666472,12666474,12666473,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666473,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666473,12666472,12666472,12666472,12666471,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666473,12666472,12666472,12666472,12666472,12666471,12666472,12666473,12666472,12666472,12666472,12666472,12666471,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666473,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666471,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666472,12666475,12666475,12666474,12666474,12666475,12666475,12666475,12666475,12666474,12666474,12666474,12666475,12666475,12666475,12666476,12666476,12666476,12666476,12666477,12666477,12666477,12666476,12666476,12666476,12666476,12666477,12666482,12666482,12666482,12666481,12666481,12666482,12666482,12666482,12666482,12666481,12666480,12666479,12666480,12666480,12666480,12666479,12666478,12666477,12666476,12666476,12666475,12666474,12666473,12666473,12666472,12666471,12666471,12666470,12666470,12666470,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666469,12666469,12666470,12666469,12666469,12666469,12666470,12666470,12666470,12666470,12666469,12666469,12666469,12666470,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666470,12666470,12666470,12666469,12666469,12666469,12666470,12666470,12666470,12666469,12666469,12666469,12666469,12666470,12666470,12666469,12666469,12666469,12666469,12666469,12666470,12666475,12666474,12666474,12666474,12666474,12666474,12666474,12666474,12666474,12666474,12666474,12666474,12666475,12666475,12666475,12666475,12666475,12666475,12666475,12666475,12666476,12666476,12666476,12666476,12666476,12666476,12666477,12666477,12666477,12666477,12666477,12666477,12666477,12666478,12666478,12666478,12666478,12666478,12666478,12666478,12666479,12666479,12666479,12666479,12666479,12666479,12666480,12666481,12666481,12666481,12666481,12666482,12666482,12666481,12666482,12666483,12666483,12666483,12666483,12666494,12666494,12666495,12666495,12666495,12666495,12666495,12666495,12666496,12666497,12666497,12666497,12666497,12666497,12666497,12666497,12666498,12666498,12666498,12666498,12666498,12666498,12666498,12666499,12666499,12666499,12666499,12666499,12666499,12666499,12666500,12666501,12666501,12666501,12666501,12666501,12666502,12666502,12666502,12666502,12666502,12666506,12666506,12666508,12666508,12666508,12666508,12666508,12666508,12666508,12666509,12666509,12666509,12666509,12666509,12666509,12666509,12666510,12666510,12666510,12666510,12666510,12666511,12666510,12666511,12666512,12666512,12666512,12666512,12666512,12666512,12666513,12666513,12666513,12666516,12666516,12666523,12666523,12666524,12666524,12666524,12666524,12666525,12666524,12666524,12666526,12666526,12666526,12666526,12666526,12666526,12666526,12666530,12666530,12666530,12666530,12666530,12666530,12666530,12666531,12666532,12666531,12666531,12666532,12666531,12666531,12666533,12666533,12666533,12666533,12666533,12666533,12666533,12666534,12666534,12666534,12666527,12666534,12666534,12666527,12666528,12666534,12666535,12666528,12666528,12666535,12666535,12666529,12666528,12666535,12666536,12666529,12666541,12666541,12666540,12666539,12666538,12666537,12666536,12666535,12666535,12666534,12666533,12666532,12666531,12666531,12666531,12666532,12666532,12666532,12666532,12666532,12666533,12666533,12666533,12666533,12666534,12666534,12666534,12666534,12666534,12666535,12666535,12666535,12666535,12666535,12666537,12666537,12666538,12666538,12666538,12666538,12666538,12666538,12666538,12666539,12666539,12666539,12666539,12666539,12666540,12666540,12666540,12666541,12666541,12666541,12666541,12666541,12666541,12666542,12666542,12666542,12666542,12666542,12666542,12666543,12666543,12666543,12666543,12666543,12666543,12666543,12666544,12666544,12666544,12666545,12666545,12666545,12666545,12666546,12666546,12666546,12666546,12666546,12666546,12666546,12666547,12666547,12666550,12666550,12666550,12666550,12666550,12666551,12666551,12666551,12666551,12666551,12666551,12666551,12666552,12666552,12666552,12666552,12666553,12666553,12666553,12666554,12666554,12666554,12666554,12666554,12666554,12666554,12666548,12666555,12666548,12666555,12666548,12666559,12666552,12666558,12666551,12666557,12666550,12666556,12666550,12666546,12666556,12666550,12666545,12666550,12666545,12666550,12666546,12666550,12666546,12666546,12666546,12666546,12666546,12666546,12666547,12666547,12666547,12666548,12666548,12666548,12666548,12666549,12666549,12666549,12666549,12666549,12666549,12666550,12666550,12666550,12666550,12666550,12666550,12666550,12666551,12666551,12666551,12666552,12666551,12666551,12666551,12666567,12666567,12666567,12666567,12666567,12666567,12666567,12666568,12666568,12666568,12666568,12666569,12666569,12666569,12666570,12666570,12666570,12666570,12666570,12666570,12666570,12666571,12666571,12666571,12666571,12666571,12666571,12666571,12666572,12666572,12666572,12666572,12666572,12666572,12666572,12666573,12666574,12666574,12666574,12666574,12666574,12666574,12666575,12666575,12666575,12666575,12666575,12666575,12666575,12666576,12666576,12666576,12666576,12666576,12666576,12666576,12666578,12666578,12666577,12666577,12666578,12666578,12666579,12666579,12666579,12666579,12666579,12666579,12666579,12666580,12666580,12666580,12666580,12666580,12666580,12666580,12666581,12666581,12666581,12666581,12666581,12666582,12666582,12666583,12666583,12666583,12666583,12666583,12666583,12666584,12666585,12666585,12666585,12666585,12666585,12666586,12666586,12666587,12666587,12666587,12666587,12666587,12666587,12666587,12666588,12666588,12666598,12666600,12666600,12666600,12666600,12666601,12666601,12666601,12666601,12666601,12666601,12666601,12666602,12666603,12666603,12666602,12666602,12666602,12666603,12666604,12666604,12666604,12666604,12666604,12666604,12666604,12666605,12666605,12666605,12666605,12666606,12666606,12666606,12666607,12666607,12666608,12666608,12666608,12666608,12666609,12666609,12666609,12666609,12666609,12666608,12666608,12666609,12666606,12666609,12666606,12666609,12666606,12666606,12666607,12666607,12666607,12666607,12666607,12666607,12666607,12666608,12666608,12666609,12666609,12666609,12666609,12666609,12666610,12666610,12666609,12666610,12666609,12666609,12666609,12666610,12666610,12666610,12666610,12666606,12666610,12666606,12666610,12666606,12666610,12666606,12666611,12666606,12666611,12666607,12666607,12666607,12666607,12666606,12666607,12666607,12666607,12666608,12666608,12666608,12666607,12666608,12666608,12666609,12666609,12666609,12666609,12666609,12666609,12666610,12666610,12666610,12666612,12666612,12666612,12666612,12666613,12666613,12666614,12666614,12666614,12666614,12666614,12666615,12666615,12666615,12666615,12666615,12666615,12666615,12666615,12666616,12666616,12666616,12666616,12666616,12666616,12666617,12666618,12666618,12666618,12666618,12666618,12666618,12666618,12666619,12666619,12666619,12666619,12666619,12666619,12666619,12666620,12666620,12666616,12666620,12666619,12666622,12666618,12666622,12666618,12666622,12666618,12666618,12666618,12666619,12666620,12666620,12666620,12666620,12666620,12666620,12666620,12666621,12666621,12666623,12666623,12666623,12666623,12666623,12666624,12666624,12666624,12666625,12666625,12666625,12666625,12666626,12666626,12666626,12666626,12666639,12666639,12666654,12666655,12666655,12666655,12666655,12666655,12666656,12666657,12666657,12666657,12666657,12666657,12666657,12666657,12666658,12666658,12666658,12666658,12666658,12666658,12666658,12666659,12666659,12666659,12666659,12666659,12666659,12666659,12666660,12666660,12666650,12666660,12666650,12666660,12666651,12666660,12666651,12666660,12666651,12666660,12666651,12666661,12666651,12666661,12666651,12666661,12666660,12666669,12666660,12666669,12666661,12666660,12666661,12666661,12666661,12666661,12666661,12666662,12666662,12666662,12666662,12666662,12666662,12666663,12666663,12666663,12666663,12666663,12666663,12666663,12666664,12666665,12666665,12666665,12666665,12666665,12666665,12666666,12666666,12666666,12666666,12666666,12666666,12666666,12666667,12666667,12666667,12666667,12666667,12666668,12666668,12666668,12666668,12666668,12666668,12666669,12666669,12666669,12666666,12666670,12666666,12666670,12666666,12666670,12666667,12666670,12666667,12666667,12666667,12666667,12666667,12666667,12666668,12666668,12666668,12666668,12666668,12666668,12666668,12666669,12666669,12666669,12666669,12666669,12666670,12666670,12666670,12666671,12666671,12666671,12666671,12666671,12666671,12666672,12666672,12666672,12666672,12666672,12666672,12666672,12666673,12666673,12666673,12666673,12666673,12666666,12666671,12666674,12666666,12666671,12666674,12666666,12666671,12666674,12666666,12666671,12666666,12666671,12666666,12666672,12666667,12666667,12666667,12666667,12666667,12666667,12666667,12666668,12666668,12666668,12666668,12666668,12666668,12666668,12666669,12666670,12666670,12666670,12666670,12666670,12666670,12666669,12666668,12666671,12666669,12666668,12666668,12666668,12666669,12666669,12666669,12666669,12666669,12666669,12666669,12666670,12666670,12666670,12666670,12666670,12666670,12666670,12666671,12666672,12666672,12666672,12666672,12666672,12666672,12666673,12666673,12666673,12666673,12666673,12666673,12666673,12666674,12666674,12666674,12666674,12666674,12666674,12666674,12666675,12666676,12666676,12666676,12666676,12666676,12666675,12666677,12666677,12666677,12666677,12666677,12666677,12666677,12666678,12666678,12666678,12666678,12666678,12666678,12666679,12666679,12666679,12666679,12666679,12666679,12666679,12666680,12666681,12666681,12666681,12666681,12666681,12666681,12666682,12666682,12666682,12666682,12666682,12666682,12666682,12666683,12666681,12666683,12666681,12666681,12666681,12666682,12666683,12666683,12666683,12666683,12666683,12666683,12666683,12666684,12666684,12666684,12666684,12666684,12666684,12666684,12666685,12666685,12666685,12666685,12666685,12666685,12666685,12666686,12666686,12666686,12666686,12666687,12666687,12666687,12666688,12666688,12666688,12666688,12666688,12666688,12666688,12666689,12666689,12666689,12666689,12666689,12666689,12666690,12666690,12666690,12666691,12666691,12666691,12666691,12666692,12666692,12666692,12666692,12666692,12666704,12666704,12666710,12666710,12666718,12666718,12666718,12666718,12666717,12666716,12666718,12666717,12666716,12666716,12666717,12666717,12666718,12666718,12666718,12666718,12666718,12666718,12666718,12666719,12666719,12666719,12666719,12666719,12666719,12666719,12666720,12666720,12666720,12666721,12666721,12666720,12666720,12666722,12666722,12666722,12666722,12666732,12666732,12666732,12666733,12666733,12666733,12666733,12666733,12666734,12666734,12666735,12666735,12666735,12666735,12666735,12666735,12666735,12666736,12666736,12666736,12666736,12666736,12666736,12666736,12666737,12666737,12666737,12666737,12666737,12666737,12666737,12666738,12666738,12666739,12666739,12666739,12666739,12666740,12666740,12666740,12666740,12666740,12666740,12666740,12666741,12666741,12666741,12666741,12666741,12666741,12666738,12666742,12666738,12666743,12666738,12666743,12666738,12666743,12666739,12666739,12666739,12666740,12666740,12666739,12666740,12666740,12666741,12666741,12666741,12666741,12666741,12666741,12666742,12666742,12666742,12666742,12666742,12666742,12666742,12666743,12666743,12666743,12666743,12666743,12666743,12666743,12666744,12666744,12666745,12666745,12666745,12666745,12666745,12666746,12666746,12666746,12666746,12666746,12666746,12666746,12666760,12666759,12666758,12666757,12666756,12666755,12666754,12666754,12666753,12666752,12666751,12666750,12666749,12666749,12666750,12666750,12666750,12666750,12666750,12666750,12666751,12666751,12666751,12666751,12666751,12666751,12666751,12666752,12666752,12666752,12666752,12666752,12666753,12666753,12666754,12666754,12666754,12666754,12666754,12666754,12666754,12666755,12666755,12666755,12666755,12666768,12666767,12666766,12666766,12666765,12666764,12666763,12666762,12666761,12666760,12666760,12666759,12666758,12666757,12666758,12666758,12666758,12666759,12666759,12666759,12666759,12666759,12666759,12666759,12666760,12666761,12666761,12666761,12666761,12666761,12666762,12666763,12666763,12666762,12666763,12666762,12666762,12666762,12666762,12666762,12666762,12666762,12666763,12666763,12666763,12666777,12666776,12666775,12666774,12666765,12666773,12666766,12666773,12666765,12666772,12666764,12666772,12666763,12666771,12666759,12666757,12666758,12666756,12666757,12666757,12666757,12666757,12666758,12666757,12666758,12666758,12666758,12666758,12666759,12666759,12666759,12666759,12666760,12666760,12666760,12666760,12666760,12666760,12666760,12666761,12666761,12666761,12666761,12666761,12666761,12666761,12666762,12666762,12666763,12666763,12666763,12666763,12666763,12666764,12666764,12666764,12666764,12666764,12666764,12666764,12666765,12666765,12666765,12666765,12666765,12666765,12666765,12666766,12666767,12666766,12666766,12666766,12666766,12666766,12666779,12666778,12666779,12666779,12666780,12666779,12666779,12666780,12666781,12666781,12666781,12666781,12666781,12666781,12666782,12666782,12666782,12666782,12666782,12666782,12666782,12666783,12666783,12666783,12666783,12666783,12666784,12666784,12666785,12666785,12666784,12666784,12666785,12666785,12666785,12666786,12666786,12666786,12666786,12666786,12666786,12666787,12666787,12666787,12666787,12666787,12666787,12666787,12666788,12666788,12666789,12666789,12666789,12666789,12666789,12666790,12666790,12666790,12666790,12666790,12666790,12666790,12666791,12666791,12666791,12666789,12666791,12666789,12666792,12666790,12666790,12666790,12666790,12666790,12666790,12666790,12666792,12666791,12666791,12666791,12666792,12666792,12666792,12666793,12666799,12666799,12666799,12666799,12666799,12666799,12666800,12666800,12666800,12666800,12666801,12666801,12666801,12666802,12666802,12666802,12666802,12666802,12666802,12666802,12666803,12666803,12666803,12666803,12666803,12666803,12666803,12666804,12666804,12666804,12666804,12666804,12666804,12666804,12666805,12666806,12666805,12666804,12666806,12666804,12666804,12666805,12666805,12666806,12666806,12666806,12666806,12666806,12666806,12666807,12666807,12666807,12666807,12666807,12666808,12666808,12666808,12666808,12666806,12666808,12666806,12666807,12666807,12666807,12666807,12666807,12666807,12666807,12666797,12666809,12666797,12666809,12666798,12666809,12666798,12666809,12666798,12666809,12666798,12666809,12666799,12666809,12666799,12666810,12666799,12666810,12666800,12666810,12666800,12666810,12666800,12666810,12666800,12666795,12666800,12666796,12666800,12666796,12666800,12666796,12666801,12666796,12666801,12666797,12666797,12666797,12666797,12666797,12666797,12666797,12666798,12666798,12666798,12666798,12666798,12666798,12666798,12666799,12666799,12666799,12666799,12666800,12666800,12666800,12666801,12666801,12666801,12666801,12666801,12666801,12666801,12666802,12666802,12666802,12666802,12666802,12666802,12666802,12666803,12666803,12666806,12666806,12666806,12666806,12666807,12666807,12666807,12666807,12666807,12666807,12666807,12666808,12666808,12666808,12666802,12666809,12666802,12666808,12666802,12666808,12666802,12666809,12666803,12666819,12666812,12666819,12666816,12666822,12666815,12666820,12666820,12666820,12666821,12666821,12666821,12666821,12666821,12666821,12666821,12666822,12666822,12666823,12666823,12666823,12666823,12666823,12666824,12666824,12666824,12666824,12666824,12666824,12666824,12666825,12666825,12666825,12666825,12666825,12666825,12666826,12666827,12666827,12666827,12666827,12666827,12666827,12666827,12666828,12666828,12666828,12666828,12666828,12666828,12666829,12666829,12666829,12666829,12666829,12666829,12666829,12666830,12666830,12666830,12666830,12666830,12666836,12666843,12666844,12666845,12666845,12666845,12666845,12666845,12666845,12666846,12666846,12666846,12666846,12666846,12666846,12666846,12666847,12666847,12666847,12666847,12666847,12666847,12666847,12666849,12666849,12666849,12666849,12666849,12666849,12666849,12666850,12666850,12666850,12666850,12666850,12666850,12666850,12666851,12666851,12666851,12666851,12666851,12666851,12666852,12666852,12666853,12666853,12666853,12666853,12666853,12666853,12666854,12666855,12666855,12666855,12666855,12666855,12666855,12666856,12666856,12666856,12666856,12666856,12666856,12666856,12666857,12666857,12666857,12666857,12666857,12666857,12666857,12666858,12666858,12666858,12666858,12666858,12666867,12666868,12666868,12666868,12666868,12666868,12666872,12666872,12666873,12666873,12666873,12666873,12666873,12666873,12666873,12666874,12666874,12666874,12666874,12666874,12666874,12666874,12666875,12666875,12666876,12666876,12666876,12666876,12666876,12666877,12666877,12666877,12666877,12666877,12666877,12666878,12666879,12666879,12666879,12666879,12666879,12666879,12666879,12666880,12666880,12666880,12666880,12666880,12666880,12666880,12666881,12666881,12666881,12666882,12666882,12666882,12666882,12666883,12666883,12666883,12666883,12666883,12666883,12666883,12666884,12666884,12666884,12666884,12666892,12666891,12666891,12666893,12666892,12666892,12666893,12666893,12666893,12666893,12666894,12666894,12666894,12666894,12666894,12666894,12666894,12666895,12666895,12666895,12666895,12666895,12666895,12666895,12666896,12666896,12666896,12666897,12666897,12666896,12666896,12666897,12666898,12666898,12666898,12666898,12666898,12666898,12666899,12666899,12666899,12666899,12666899,12666899,12666899,12666900,12666900,12666900,12666900,12666900,12666900,12666900,12666902,12666902,12666902,12666902,12666902,12666902,12666902,12666903,12666903,12666903,12666903,12666903,12666903,12666903,12666904,12666904,12666904,12666904,12666904,12666904,12666904,12666906,12666905,12666905,12666905,12666906,12666906,12666907,12666907,12666907,12666907,12666907,12666907,12666907,12666908,12666908,12666908,12666908,12666908,12666908,12666908,12666909,12666909,12666909,12666909,12666910,12666910,12666910,12666911,12666911,12666911,12666911,12666911,12666911,12666911,12666912,12666912,12666912,12666912,12666912,12666911,12666912,12666912,12666912,12666912,12666912,12666912,12666912,12666912,12666913,12666913,12666913,12666913,12666909,12666913,12666909,12666913,12666903,12666909,12666913,12666903,12666909,12666914,12666903,12666909,12666914,12666904,12666910,12666904,12666910,12666904,12666910,12666904,12666910,12666904,12666904,12666904,12666905,12666905,12666905,12666906,12666906,12666916,12666916,12666917,12666917,12666917,12666917,12666917,12666917,12666918,12666919,12666919,12666919,12666919,12666919,12666919,12666919,12666920,12666920,12666920,12666920,12666920,12666920,12666920,12666921,12666921,12666921,12666921,12666913,12666921,12666914,12666921,12666914,12666921,12666913,12666922,12666914,12666922,12666914,12666923,12666914,12666923,12666915,12666923,12666915,12666923,12666915,12666915,12666915,12666915,12666915,12666916,12666916,12666916,12666916,12666916,12666916,12666916,12666917,12666917,12666917,12666917,12666917,12666918,12666917,12666918,12666919,12666919,12666919,12666919,12666919,12666919,12666920,12666920,12666920,12666920,12666920,12666920,12666920,12666921,12666921,12666921,12666921,12666921,12666921,12666921,12666922,12666922,12666922,12666923,12666923,12666923,12666923,12666924,12666924,12666924,12666924,12666924,12666924,12666924,12666925,12666925,12666925,12666925,12666925,12666925,12666925,12666926,12666926,12666927,12666927,12666927,12666934,12666933,12666933,12666932,12666931,12666930,12666929,12666928,12666928,12666929,12666929,12666929,12666929,12666929,12666929,12666930,12666930,12666930,12666930,12666930,12666930,12666930,12666932,12666932,12666932,12666932,12666932,12666932,12666932,12666933,12666933,12666933,12666933,12666933,12666933,12666933,12666934,12666934,12666934,12666934,12666934,12666934,12666934,12666935,12666936,12666936,12666936,12666935,12666936,12666936,12666937,12666937,12666937,12666937,12666950,12666949,12666948,12666948,12666947,12666946,12666945,12666944,12666943,12666942,12666942,12666941,12666940,12666940,12666940,12666941,12666941,12666942,12666942,12666942,12666942,12666942,12666942,12666942,12666943,12666943,12666943,12666943,12666943,12666943,12666943,12666944,12666944,12666944,12666944,12666944,12666944,12666944,12666945,12666945,12666946,12666946,12666946,12666960,12666960,12666959,12666958,12666957,12666956,12666955,12666954,12666954,12666953,12666952,12666951,12666950,12666949,12666948,12666949,12666949,12666949,12666950,12666949,12666950,12666950,12666951,12666951,12666951,12666951,12666951,12666951,12666951,12666952,12666952,12666952,12666952,12666952,12666952,12666952,12666953,12666953,12666953,12666953,12666953,12666953,12666952,12666953,12666953,12666954,12666954,12666954,12666954,12666954,12666955,12666955,12666955,12666955,12666955,12666955,12666955,12666956,12666956,12666956,12666956,12666956,12666956,12666956,12666957,12666958,12666958,12666958,12666958,12666958,12666958,12666959,12666959,12666959,12666959,12666959,12666959,12666960,12666960,12666960,12666960,12666960,12666960,12666960,12666961,12666961,12666961,12666961,12666961,12666970,12666970,12666971,12666971,12666971,12666971,12666971,12666971,12666971,12666977,12666978,12666978,12666978,12666979,12666979,12666979,12666981,12666981,12666981,12666981,12666981,12666981,12666981,12666982,12666982,12666982,12666982,12666982,12666982,12666982,12666983,12666983,12666983,12666983,12666983,12666983,12666984,12666985,12666985,12666985,12666985,12666985,12666985,12666985,12666986,12666986,12666986,12666986,12666986,12666986,12666986,12666987,12666987,12666987,12666987,12666979,12666988,12666979,12666987,12666979,12666987,12666979,12666989,12666979,12666989,12666979,12666989,12666980,12666989,12666980,12666989,12666980,12666989,12666981,12666990,12666981,12666981,12666981,12666982,12666981,12666981,12666981,12666981,12666981,12666981,12666982,12666982,12666982,12666982,12666982,12666982,12666982,12666983,12666983,12666983,12666984,12666984,12666983,12666984,12666985,12666985,12666985,12666985,12666985,12666985,12666985,12666986,12666986,12666986,12666986,12666986,12666986,12666986,12666987,12666987,12666987,12666987,12666987,12666987,12666988,12666989,12666989,12666989,12666989,12666989,12666989,12666990,12666990,12666990,12666990,12666990,12666990,12666990,12666991,12666991,12666991,12666991,12666991,12666991,12666991,12666992,12666992,12666992,12666992,12666992,12666993,12666993,12666994,12666994,12666994,12666994,12666994,12666994,12666994,12666995,12666995,12666995,12666995,12666995,12666995,12666995,12666996,12666996,12666996,12666996,12666996,12666996,12666997,12666998,12666998,12666998,12666998,12666998,12666998,12666993,12666998,12666993,12666999,12666993,12666999,12666994,12666999,12666994,12666999,12666994,12666994,12666994,12666994,12666994,12666995,12666995,12666995,12666995,12666995,12666995,12666995,12666997,12666997,12666997,12666997,12666997,12666997,12666997,12666998,12666998,12666998,12666998,12666998,12666998,12666998,12666999,12666999,12666999,12666999,12666999,12666999,12667001,12667000,12667000,12667001,12667001,12667001,12667001,12667002,12667002,12667002,12667002,12667002,12667002,12667002,12667003,12667003,12667003,12667003,12667003,12667003,12667003,12667004,12667004,12667004,12667004,12667004,12667005,12667005,12667006,12667006,12667006,12667006,12667006,12667006,12667006,12667007,12667007,12667007,12667007,12667007,12667007,12667007,12667008,12667008,12667008,12667008,12667008,12667009,12667009,12667010,12667010,12667010,12667010,12667010,12667010,12667010,12667011,12667011,12667011,12667011,12667011,12667011,12667011,12667018,12667018,12667018,12667018,12667018,12667018,12667018,12667019,12667019,12667019,12667019,12667019,12667019,12667019,12667020,12667020,12667021,12667021,12667029,12667029,12667029,12667030,12667030,12667030,12667030,12667030,12667030,12667030,12667031,12667031,12667031,12667031,12667031,12667031,12667031,12667032,12667032,12667032,12667032,12667042,12667042,12667045,12667045,12667045,12667045,12667045,12667045,12667046,12667046,12667047,12667044,12667047,12667045,12667047,12667045,12667045,12667046,12667045,12667045,12667045,12667046,12667046,12667047,12667047,12667047,12667047,12667047,12667047,12667047,12667040,12667048,12667041,12667048,12667041,12667048,12667040,12667048,12667041,12667048,12667041,12667048,12667042,12667048,12667042,12667049,12667042,12667039,12667042,12667040,12667042,12667035,12667040,12667042,12667035,12667040,12667036,12667040,12667037,12667040,12667037,12667037,12667037,12667037,12667037,12667038,12667038,12667038,12667038,12667038,12667038,12667038,12667039,12667039,12667039,12667039,12667039,12667039,12667039,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667041,12667041,12667041,12667041,12667041,12667042,12667043,12667043,12667042,12667043,12667043,12667043,12667043,12667044,12667044,12667044,12667044,12667044,12667044,12667044,12667045,12667045,12667045,12667045,12667045,12667045,12667045,12667046,12667046,12667047,12667047,12667047,12667047,12667047,12667048,12667048,12667048,12667048,12667048,12667043,12667048,12667043,12667048,12667044,12667039,12667049,12667038,12667044,12667049,12667039,12667045,12667049,12667045,12667040,12667040,12667045,12667045,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667040,12667041,12667041,12667041,12667042,12667041,12667042,12667042,12667043,12667043,12667043,12667043,12667043,12667043,12667043,12667044,12667044,12667045,12667045,12667045,12667045,12667046,12667046,12667046,12667046,12667046,12667046,12667046,12667048,12667048,12667048,12667048,12667048,12667048,12667048,12667049,12667049,12667049,12667049,12667050,12667050,12667049,12667051,12667051,12667051,12667051,12667050,12667050,12667050,12667051,12667051,12667051,12667051,12667051,12667055,12667055,12667056,12667057,12667057,12667057,12667057,12667057,12667057,12667058,12667058,12667058,12667058,12667058,12667058,12667058,12667059,12667059,12667059,12667059,12667059,12667059,12667059,12667060,12667060,12667054,12667061,12667054,12667061,12667054,12667061,12667054,12667061,12667054,12667061,12667055,12667062,12667055,12667062,12667055,12667055,12667055,12667055,12667055,12667056,12667056,12667053,12667056,12667053,12667056,12667054,12667056,12667054,12667054,12667054,12667054,12667054,12667054,12667055,12667055,12667055,12667055,12667055,12667055,12667056,12667056,12667056,12667057,12667057,12667057,12667056,12667057,12667058,12667058,12667058,12667058,12667058,12667058,12667059,12667059,12667059,12667059,12667059,12667059,12667059,12667060,12667060,12667060,12667060,12667060,12667060,12667060,12667061,12667061,12667061,12667061,12667061,12667063,12667063,12667064,12667064,12667064,12667064,12667064,12667064,12667064,12667065,12667066,12667065,12667066,12667066,12667066,12667066,12667067,12667067,12667067,12667067,12667067,12667067,12667067,12667068,12667068,12667068,12667068,12667063,12667068,12667063,12667068,12667063,12667068,12667063,12667070,12667064,12667070,12667064,12667069,12667064,12667064,12667064,12667064,12667064,12667065,12667065,12667076,12667075,12667076,12667076,12667077,12667077,12667077,12667077,12667077,12667077,12667077,12667078,12667078,12667078,12667078,12667078,12667078,12667078,12667079,12667079,12667079,12667079,12667079,12667079,12667080,12667081,12667081,12667080,12667081,12667081,12667081,12667081,12667081,12667081,12667082,12667082,12667082,12667082,12667082,12667082,12667082,12667083,12667083,12667083,12667083,12667083,12667083,12667083,12667085,12667084,12667085,12667085,12667085,12667085,12667085,12667086,12667086,12667086,12667086,12667086,12667086,12667086,12667087,12667087,12667087,12667087,12667087,12667087,12667087,12667089,12667089,12667089,12667088,12667089,12667089,12667089,12667090,12667090,12667090,12667090,12667090,12667090,12667090,12667091,12667091,12667091,12667091,12667091,12667091,12667091,12667092,12667092,12667092,12667093,12667092,12667093,12667093,12667094,12667094,12667094,12667094,12667094,12667094,12667094,12667095,12667095,12667095,12667095,12667097,12667096,12667096,12667096,12667096,12667096,12667096,12667097,12667097,12667103,12667102,12667101,12667100,12667099,12667098,12667098,12667099,12667111,12667110,12667109,12667108,12667107,12667106,12667106,12667105,12667104,12667103,12667102,12667101,12667100,12667102,12667101,12667102,12667102,12667102,12667102,12667102,12667103,12667103,12667103,12667103,12667103,12667103,12667103,12667104,12667104,12667104,12667104,12667096,12667104,12667096,12667105,12667096,12667105,12667096,12667106,12667096,12667106,12667096,12667106,12667105,12667096,12667105,12667097,12667105,12667097,12667105,12667097,12667097,12667097,12667097,12667097,12667098,12667098,12667099,12667099,12667099,12667099,12667099,12667100,12667100,12667100,12667100,12667100,12667100,12667100,12667101,12667101,12667101,12667101,12667101,12667101,12667101,12667103,12667102,12667102,12667102,12667103,12667102,12667103,12667104,12667104,12667104,12667104,12667104,12667104,12667104,12667105,12667105,12667105,12667105,12667105,12667105,12667105,12667106,12667106,12667106,12667106,12667106,12667107,12667108,12667108,12667108,12667108,12667108,12667108,12667108,12667109,12667109,12667109,12667109,12667109,12667109,12667109,12667110,12667110,12667110,12667110,12667110,12667110,12667110,12667111,12667112,12667112,12667127,12667126,12667125,12667124,12667124,12667123,12667122,12667121,12667120,12667119,12667118,12667118,12667117,12667116,12667115,12667114,12667114,12667124,12667125,12667125,12667125,12667125,12667125,12667125,12667125,12667126,12667126,12667126,12667126,12667127,12667127,12667126,12667128,12667128,12667128,12667128,12667128,12667128,12667128,12667129,12667129,12667129,12667129,12667129,12667129,12667129,12667130,12667130,12667130,12667130,12667132,12667132,12667142,12667143,12667143,12667143,12667154,12667154,12667155,12667155,12667156,12667156,12667156,12667156,12667156,12667156,12667156,12667157,12667157,12667157,12667157,12667157,12667157,12667158,12667158,12667158,12667158,12667158,12667158,12667158,12667160,12667160,12667160,12667160,12667160,12667160,12667160,12667161,12667161,12667161,12667161,12667161,12667161,12667161,12667162,12667162,12667162,12667162,12667162,12667162,12667162,12667163,12667163,12667164,12667163,12667164,12667164,12667164,12667165,12667165,12667165,12667165,12667165,12667165,12667165,12667166,12667166,12667166,12667166,12667173,12667173,12667173,12667174,12667174,12667174,12667174,12667173,12667173,12667173,12667174,12667174,12667174,12667175,12667175,12667175,12667175,12667176,12667176,12667176,12667176,12667176,12667176,12667176,12667177,12667186,12667186,12667186,12667186,12667186,12667186,12667187,12667187,12667187,12667187,12667187,12667187,12667187,12667188,12667188,12667188,12667188,12667188,12667188,12667188,12667189,12667189,12667189,12667190,12667190,12667190,12667190,12667191,12667191,12667191,12667191,12667191,12667191,12667192,12667192,12667192,12667192,12667192,12667192,12667192,12667193,12667193,12667193,12667194,12667194,12667194,12667194,12667195,12667195,12667195,12667195,12667195,12667195,12667195,12667196,12667196,12667196,12667196,12667196,12667196,12667196,12667197,12667197,12667197,12667197,12667197,12667198,12667198,12667199,12667199,12667199,12667199,12667199,12667199,12667199,12667200,12667200,12667200,12667200,12667200,12667202,12667202,12667204,12667203,12667204,12667204,12667204,12667204,12667204,12667205,12667205,12667205,12667205,12667205,12667205,12667205,12667206,12667206,12667206,12667206,12667206,12667206,12667206,12667207,12667207,12667207,12667207,12667207,12667208,12667208,12667209,12667209,12667209,12667209,12667209,12667209,12667210,12667210,12667210,12667210,12667210,12667210,12667210,12667204,12667211,12667204,12667211,12667204,12667211,12667204,12667212,12667204,12667211,12667204,12667212,12667205,12667212,12667206,12667213,12667206,12667206,12667206,12667205,12667205,12667207,12667207,12667212,12667211,12667208,12667212,12667208,12667212,12667208,12667212,12667208,12667213,12667208,12667208,12667209,12667209,12667209,12667209,12667207,12667209,12667208,12667215,12667215,12667215,12667215,12667215,12667215,12667215,12667216,12667216,12667216,12667216,12667216,12667216,12667216,12667218,12667218,12667218,12667218,12667218,12667218,12667218,12667219,12667219,12667219,12667219,12667219,12667219,12667219,12667220,12667220,12667220,12667220,12667220,12667220,12667221,12667223,12667235,12667236,12667237,12667237,12667237,12667238,12667238,12667238,12667238,12667238,12667238,12667238,12667239,12667239,12667239,12667239,12667239,12667239,12667239,12667240,12667240,12667241,12667241,12667241,12667241,12667241,12667242,12667242,12667242,12667242,12667242,12667242,12667242,12667243,12667243,12667243,12667243,12667243,12667243,12667243,12667244,12667244,12667244,12667244,12667245,12667245,12667245,12667246,12667246,12667246,12667246,12667246,12667246,12667246,12667247,12667247,12667247,12667247,12667247,12667247,12667247,12667248,12667248,12667248,12667248,12667248,12667249,12667249,12667250,12667250,12667250,12667250,12667250,12667254,12667259,12667264,12667272,12667274,12667279,12667291,12667294,12667298,12667302,12667305,12667308,12667311,12667318,12667323,12667327,12667331,12667334,12667337,12667346,12667350,12667353,12667356,12667359,12667363,12667364,12667364,12667363,12667363,12667363,12667362,12667362,12667361,12667361,12667360,12667359,12667360,12667359,12667359,12667358,12667357,12667357,12667356,12667357,12667356,12667356,12667355,12667354,12667354,12667353,12667354,12667353,12667352,12667352,12667351,12667351,12667350,12667350,12667350,12667349,12667349,12667348,12667347,12667347,12667347,12667347,12667346,12667346,12667345,12667344,12667344,12667344,12667344,12667343,12667342,12667342,12667341,12667341,12667341,12667341,12667340,12667340,12667339,12667339,12667338,12667339,12667338,12667337,12667337,12667336,12667336,12667335,12667335,12667335,12667334,12667334,12667333,12667332,12667332,12667332,12667332,12667331,12667331,12667330,12667329,12667330,12667329,12667329,12667328,12667327,12667327,12667326,12667327,12667326,12667325,12667325,12667324,12667324,12667323,12667323,12667323,12667322,12667322,12667321,12667320,12667320,12667320,12667320,12667319,12667319,12667318,12667317,12667317,12667317,12667317,12667316,12667315,12667315,12667314,12667314,12667314,12667314,12667314,12667314,12667314,12667314,12667314,12667315,12667315,12667315,12667315,12667315,12667315,12667315,12667316,12667316,12667316,12667316,12667316,12667316,12667316,12667317,12667317,12667317,12667317,12667318,12667318,12667318,12667319,12667319,12667319,12667319,12667319,12667319,12667319,12667320,12667320,12667320,12667320,12667320,12667320,12667320,12667321,12667321,12667321,12667322,12667322,12667322,12667323,12667323,12667318,12667328,12667323,12667328,12667332,12667336,12667332,12667337,12667332,12667337,12667332,12667332,12667333,12667333,12667333,12667333,12667333,12667334,12667334,12667335,12667335,12667335,12667335,12667335,12667335,12667335,12667329,12667336,12667329,12667336,12667329,12667336,12667330,12667336,12667330,12667336,12667330,12667336,12667330,12667336,12667331,12667331,12667331,12667331,12667331,12667331,12667331,12667332,12667332,12667332,12667332,12667332,12667332,12667332,12667333,12667333,12667333,12667334,12667333,12667333,12667333,12667327,12667334,12667327,12667335,12667327,12667335,12667327,12667335,12667327,12667335,12667327,12667335,12667328,12667335,12667328,12667336,12667329,12667328,12667329,12667327,12667329,12667327,12667330,12667327,12667327,12667327,12667327,12667328,12667328,12667328,12667328,12667328,12667328,12667328,12667330,12667330,12667330,12667330,12667330,12667330,12667330,12667331,12667331,12667331,12667331,12667331,12667331,12667331,12667332,12667332,12667332,12667332,12667332,12667332,12667332,12667333,12667333,12667333,12667334,12667334,12667334,12667334,12667335,12667335,12667335,12667335,12667335,12667335,12667335,12667336,12667336,12667336,12667336,12667336,12667338,12667337,12667337,12667337,12667338,12667338,12667338,12667338,12667338,12667339,12667338,12667339,12667339,12667339,12667339,12667339,12667340,12667340,12667340,12667340,12667340,12667340,12667340,12667341,12667341,12667341,12667341,12667341,12667341,12667341,12667342,12667343,12667343,12667343,12667343,12667343,12667344,12667344,12667344,12667344,12667344,12667344,12667344,12667345,12667345,12667345,12667345,12667345,12667345,12667345,12667346,12667347,12667347,12667347,12667346,12667347,12667347,12667348,12667348,12667348,12667348,12667348,12667360,12667359,12667359,12667358,12667357,12667356,12667355,12667354,12667353,12667353,12667352,12667351,12667350,12667351,12667350,12667351,12667352,12667352,12667352,12667352,12667352,12667352,12667352,12667353,12667353,12667353,12667353,12667353,12667353,12667353,12667354,12667354,12667354,12667354,12667355,12667355,12667355,12667355,12667356,12667355,12667356,12667356,12667356,12667370,12667370,12667369,12667368,12667367,12667366,12667365,12667364,12667364,12667363,12667362,12667361,12667360,12667359,12667358,12667359,12667359,12667359,12667359,12667359,12667359,12667359,12667360,12667360,12667360,12667360,12667359,12667360,12667361,12667361,12667361,12667361,12667361,12667361,12667361,12667362,12667362,12667362,12667362,12667362,12667362,12667362,12667363,12667363,12667363,12667363,12667363,12667363,12667364,12667365,12667365,12667365,12667365,12667365,12667365,12667365,12667362,12667367,12667363,12667367,12667363,12667367,12667363,12667364,12667364,12667364,12667364,12667364,12667364,12667364,12667365,12667365,12667365,12667365,12667365,12667365,12667366,12667366,12667367,12667367,12667367,12667367,12667367,12667367,12667368,12667368,12667368,12667368,12667368,12667368,12667370,12667372,12667382,12667382,12667383,12667383,12667383,12667383,12667383,12667384,12667384,12667384,12667384,12667384,12667384,12667384,12667385,12667385,12667385,12667385,12667385,12667385,12667385,12667385,12667386,12667387,12667387,12667387,12667387,12667387,12667387,12667388,12667388,12667388,12667388,12667388,12667388,12667388,12667389,12667389,12667389,12667389,12667389,12667389,12667390,12667390,12667390,12667391,12667390,12667391,12667391,12667391,12667392,12667392,12667392,12667392,12667392,12667392,12667392,12667393,12667393,12667393,12667393,12667393,12667393,12667393,12667394,12667394,12667394,12667395,12667395,12667395,12667395,12667396,12667396,12667396,12667394,12667396,12667394,12667394,12667395,12667395,12667395,12667395,12667395,12667395,12667395,12667397,12667397,12667397,12667397,12667397,12667397,12667397,12667398,12667398,12667398,12667398,12667398,12667398,12667398,12667399,12667399,12667399,12667399,12667399,12667399,12667400,12667400,12667400,12667400,12667401,12667400,12667401,12667402,12667402,12667402,12667402,12667393,12667394,12667402,12667402,12667394,12667402,12667394,12667403,12667394,12667403,12667394,12667403,12667394,12667403,12667394,12667395,12667403,12667403,12667395,12667395,12667395,12667395,12667395,12667395,12667396,12667396,12667397,12667397,12667397,12667396,12667396,12667398,12667398,12667398,12667398,12667398,12667398,12667398,12667399,12667399,12667399,12667399,12667400,12667399,12667399,12667400,12667400,12667400,12667401,12667401,12667401,12667401,12667402,12667402,12667402,12667402,12667402,12667402,12667402,12667403,12667403,12667403,12667404,12667404,12667404,12667404,12667405,12667405,12667405,12667405,12667405,12667405,12667405,12667406,12667406,12667406,12667407,12667406,12667407,12667407,12667408,12667408,12667408,12667408,12667408,12667408,12667408,12667409,12667409,12667409,12667409,12667409,12667409,12667409,12667410,12667410,12667410,12667410,12667411,12667411,12667411,12667412,12667412,12667411,12667412,12667412,12667412,12667412,12667413,12667413,12667413,12667413,12667413,12667413,12667413,12667414,12667414,12667414,12667414,12667414,12667414,12667414,12667415,12667416,12667416,12667416,12667416,12667416,12667416,12667417,12667417,12667417,12667417,12667417,12667417,12667418,12667418,12667418,12667418,12667418,12667418,12667418,12667419,12667420,12667420,12667420,12667420,12667420,12667420,12667421,12667421,12667421,12667421,12667421,12667421,12667421,12667422,12667422,12667422,12667422,12667422,12667422,12667422,12667423,12667423,12667423,12667423,12667424,12667424,12667424,12667425,12667425,12667425,12667425,12667425,12667425,12667426,12667426,12667426,12667426,12667426,12667426,12667426,12667427,12667428,12667428,12667428,12667428,12667428,12667428,12667428,12667429,12667429,12667429,12667429,12667429,12667429,12667442,12667443,12667443,12667455,12667455,12667455,12667455,12667455,12667456,12667456,12667456,12667456,12667456,12667457,12667458,12667458,12667458,12667457,12667458,12667458,12667458,12667466,12667467,12667467,12667466,12667466,12667466,12667466,12667468,12667468,12667468,12667468,12667468,12667468,12667468,12667469,12667469,12667469,12667469,12667469,12667469,12667469,12667470,12667470,12667470,12667470,12667470,12667471,12667471,12667472,12667472,12667472,12667472,12667472,12667472,12667472,12667473,12667473,12667473,12667473,12667473,12667473,12667473,12667474,12667474,12667474,12667474,12667475,12667474,12667474,12667475,12667475,12667475,12667476,12667476,12667476,12667476,12667477,12667477,12667477,12667477,12667477,12667477,12667477,12667478,12667478,12667478,12667478,12667478,12667478,12667478,12667479,12667479,12667480,12667480,12667480,12667480,12667480,12667481,12667481,12667481,12667481,12667481,12667481,12667482,12667482,12667482,12667482,12667482,12667482,12667482,12667483,12667483,12667484,12667483,12667483,12667484,12667483,12667484,12667485,12667485,12667485,12667485,12667485,12667486,12667487,12667491,12667491,12667491,12667491,12667484,12667491,12667484,12667491,12667484,12667492,12667484,12667492,12667484,12667492,12667484,12667492,12667484,12667492,12667485,12667492,12667485,12667492,12667485,12667485,12667485,12667485,12667485,12667486,12667486,12667486,12667487,12667487,12667487,12667487,12667488,12667488,12667488,12667488,12667488,12667488,12667488,12667489,12667489,12667489,12667489,12667489,12667489,12667489,12667491,12667491,12667491,12667491,12667491,12667490,12667491,12667492,12667492,12667492,12667492,12667483,12667492,12667483,12667492,12667483,12667492,12667484,12667493,12667491,12667483,12667493,12667491,12667484,12667491,12667484,12667492,12667485,12667492,12667485,12667484,12667484,12667484,12667485,12667486,12667486,12667484,12667486,12667484,12667484,12667484,12667486,12667486,12667486,12667486,12667486,12667486,12667486,12667487,12667487,12667487,12667487,12667487,12667487,12667487,12667488,12667488,12667488,12667488,12667488,12667488,12667488,12667489,12667489,12667489,12667489,12667489,12667489,12667490,12667491,12667491,12667491,12667491,12667491,12667491,12667491,12667492,12667492,12667492,12667492,12667492,12667492,12667492,12667493,12667493,12667493,12667493,12667494,12667494,12667494,12667495,12667495,12667494,12667495,12667495,12667495,12667495,12667496,12667496,12667496,12667496,12667496,12667496,12667497,12667497,12667497,12667497,12667497,12667497,12667497,12667498,12667498,12667498,12667499,12667499,12667499,12667499,12667500,12667500,12667500,12667500,12667495,12667500,12667495,12667500,12667495,12667500,12667495,12667501,12667496,12667501,12667496,12667501,12667496,12667496,12667496,12667496,12667496,12667497,12667497,12667497,12667497,12667497,12667497,12667497,12667498,12667512,12667512,12667512,12667513,12667513,12667513,12667514,12667514,12667514,12667514,12667514,12667507,12667514,12667508,12667514,12667508,12667515,12667508,12667515,12667508,12667515,12667508,12667515,12667508,12667515,12667515,12667508,12667509,12667509,12667509,12667509,12667509,12667509,12667510,12667510,12667511,12667510,12667510,12667510,12667511,12667511,12667512,12667512,12667512,12667512,12667512,12667512,12667513,12667513,12667513,12667513,12667513,12667513,12667513,12667514,12667514,12667514,12667514,12667514,12667515,12667515,12667516,12667516,12667516,12667516,12667516,12667516,12667516,12667517,12667517,12667517,12667517,12667517,12667517,12667517,12667518,12667518,12667518,12667518,12667518,12667518,12667518,12667520,12667519,12667520,12667520,12667520,12667520,12667520,12667521,12667521,12667521,12667521,12667521,12667521,12667521,12667522,12667522,12667522,12667522,12667522,12667522,12667522,12667523,12667524,12667524,12667524,12667524,12667524,12667524,12667525,12667525,12667525,12667525,12667525,12667525,12667526,12667526,12667526,12667526,12667526,12667526,12667526,12667527,12667527,12667528,12667527,12667525,12667527,12667525,12667526,12667526,12667526,12667527,12667527,12667527,12667527,12667528,12667528,12667528,12667528,12667528,12667528,12667528,12667529,12667529,12667529,12667529,12667529,12667529,12667543,12667543,12667542,12667541,12667540,12667539,12667538,12667537,12667537,12667536,12667535,12667534,12667533,12667532,12667532,12667533,12667533,12667533,12667533,12667533,12667533,12667533,12667534,12667534,12667534,12667534,12667534,12667534,12667535,12667536,12667536,12667536,12667536,12667536,12667537,12667537,12667538,12667538,12667537,12667538,12667538,12667538,12667538,12667539,12667539,12667539,12667536,12667539,12667536,12667539,12667536,12667539,12667536,12667539,12667536,12667536,12667537,12667537,12667537,12667537,12667537,12667537,12667537,12667538,12667533,12667538,12667533,12667538,12667533,12667538,12667533,12667538,12667533,12667538,12667533,12667538,12667533,12667534,12667534,12667534,12667534,12667534,12667534,12667534,12667535,12667535,12667536,12667536,12667536,12667536,12667536,12667537,12667537,12667537,12667537,12667537,12667537,12667537,12667538,12667538,12667538,12667538,12667538,12667538,12667538,12667539,12667539,12667539,12667539,12667539,12667539,12667540,12667529,12667541,12667529,12667556,12667546,12667556,12667545,12667555,12667544,12667554,12667543,12667554,12667543,12667532,12667531,12667531,12667532,12667532,12667532,12667532,12667532,12667532,12667532,12667533,12667533,12667533,12667533,12667534,12667534,12667534,12667535,12667535,12667535,12667535,12667535,12667535,12667535,12667536,12667536,12667536,12667536,12667536,12667536,12667536,12667537,12667537,12667537,12667537,12667537,12667538,12667538,12667539,12667539,12667538,12667539,12667542,12667542,12667545,12667546,12667551,12667552,12667552,12667552,12667552,12667552,12667553,12667553,12667553,12667553,12667553,12667553,12667553,12667554,12667554,12667554,12667554,12667554,12667554,12667554,12667556,12667556,12667556,12667556,12667556,12667556,12667557,12667557,12667557,12667557,12667557,12667557,12667557,12667558,12667558,12667558,12667558,12667558,12667558,12667558,12667558,12667560,12667558,12667558,12667558,12667558,12667558,12667559,12667559,12667559,12667559,12667559,12667559,12667560,12667561,12667561,12667561,12667557,12667561,12667557,12667561,12667560,12667557,12667560,12667557,12667561,12667557,12667557,12667558,12667558,12667558,12667558,12667558,12667558,12667558,12667549,12667559,12667549,12667559,12667549,12667559,12667550,12667559,12667550,12667559,12667559,12667550,12667559,12667550,12667558,12667560,12667550,12667559,12667550,12667558,12667550,12667551,12667551,12667551,12667551,12667552,12667552,12667552,12667553,12667553,12667553,12667553,12667553,12667553,12667554,12667554,12667554,12667554,12667554,12667554,12667554,12667555,12667555,12667549,12667555,12667550,12667556,12667550,12667555,12667549,12667555,12667550,12667555,12667550,12667556,12667551,12667551,12667551,12667551,12667551,12667551,12667551,12667552,12667552,12667552,12667552,12667552,12667552,12667552,12667553,12667553,12667553,12667553,12667553,12667553,12667545,12667554,12667545,12667555,12667545,12667555,12667545,12667555,12667545,12667555,12667547,12667555,12667547,12667555,12667546,12667555,12667546,12667556,12667547,12667556,12667547,12667547,12667548,12667548,12667548,12667548,12667548,12667548,12667548,12667549,12667549,12667549,12667549,12667549,12667549,12667549,12667550,12667550,12667554,12667554,12667554,12667554,12667554,12667555,12667555,12667555,12667555,12667555,12667555,12667555,12667556,12667556,12667556,12667556,12667556,12667556,12667556,12667557,12667558,12667557,12667558,12667558,12667558,12667558,12667558,12667559,12667559,12667559,12667559,12667559,12667559,12667559,12667560,12667560,12667560,12667560,12667560,12667560,12667560,12667561,12667561,12667562,12667562,12667562,12667562,12667562,12667563,12667563,12667563,12667563,12667563,12667563,12667563,12667564,12667564,12667564,12667564,12667564,12667564,12667564,12667566,12667565,12667566,12667565,12667565,12667566,12667567,12667567,12667567,12667567,12667567,12667567,12667567,12667567,12667573,12667573,12667573,12667573,12667573,12667573,12667573,12667574,12667574,12667574,12667574,12667574,12667574,12667577,12667577,12667577,12667577,12667591,12667591,12667591,12667592,12667592,12667592,12667592,12667592,12667592,12667594,12667595,12667595,12667595,12667595,12667595,12667595,12667595,12667596,12667596,12667596,12667596,12667596,12667596,12667596,12667597,12667597,12667597,12667597,12667586,12667597,12667594,12667586,12667597,12667596,12667598,12667610,12667606,12667598,12667610,12667606,12667599,12667610,12667606,12667601,12667609,12667601,12667620,12667612,12667620,12667612,12667612,12667612,12667613,12667614,12667614,12667614,12667614,12667614,12667614,12667614,12667615,12667615,12667615,12667615,12667615,12667615,12667615,12667616,12667616,12667616,12667616,12667616,12667616,12667616,12667618,12667618,12667617,12667618,12667618,12667617,12667618,12667619,12667619,12667620,12667620,12667620,12667620,12667621,12667621,12667621,12667621,12667621,12667621,12667621,12667622,12667622,12667622,12667623,12667623,12667623,12667623,12667624,12667624,12667624,12667624,12667624,12667624,12667624,12667625,12667625,12667625,12667625,12667625,12667625,12667625,12667626,12667626,12667626,12667627,12667627,12667626,12667627,12667628,12667628,12667628,12667628,12667628,12667628,12667628,12667629,12667629,12667629,12667629,12667629,12667629,12667631,12667632,12667632,12667632,12667632,12667632,12667632,12667632,12667633,12667634,12667634,12667634,12667634,12667633,12667633,12667635,12667635,12667635,12667635,12667635,12667635,12667635,12667636,12667636,12667636,12667636,12667636,12667636,12667636,12667637,12667637,12667637,12667638,12667638,12667638,12667638,12667639,12667639,12667639,12667639,12667639,12667639,12667640,12667640,12667641,12667641,12667641,12667641,12667641,12667642,12667642,12667642,12667642,12667642,12667642,12667642,12667644,12667643,12667643,12667643,12667644,12667644,12667644,12667645,12667645,12667645,12667645,12667645,12667645,12667645,12667646,12667646,12667646,12667646,12667646,12667646,12667646,12667647,12667647,12667648,12667648,12667648,12667648,12667648,12667649,12667649,12667649,12667649,12667649,12667649,12667649,12667650,12667650,12667650,12667650,12667650,12667650,12667650,12667651,12667651,12667651,12667652,12667651,12667651,12667652,12667653,12667653,12667653,12667653,12667653,12667653,12667653,12667654,12667654,12667654,12667654,12667654,12667654,12667655,12667655,12667669,12667669,12667669,12667669,12667669,12667670,12667670,12667670,12667670,12667670,12667671,12667670,12667672,12667672,12667671,12667671,12667672,12667672,12667672,12667673,12667673,12667673,12667673,12667673,12667673,12667673,12667674,12667674,12667674,12667674,12667674,12667674,12667674,12667675,12667675,12667676,12667676,12667676,12667676,12667676,12667677,12667677,12667677,12667677,12667677,12667677,12667677,12667678,12667678,12667678,12667678,12667678,12667678,12667678,12667679,12667679,12667679,12667679,12667680,12667679,12667679,12667681,12667681,12667681,12667685,12667685,12667685,12667685,12667686,12667686,12667686,12667686,12667686,12667687,12667687,12667688,12667698,12667698,12667698,12667698,12667699,12667700,12667700,12667700,12667700,12667700,12667700,12667700,12667701,12667701,12667701,12667701,12667701,12667701,12667701,12667702,12667702,12667702,12667702,12667702,12667702,12667702,12667704,12667704,12667703,12667703,12667704,12667704,12667704,12667705,12667705,12667705,12667705,12667705,12667705,12667705,12667706,12667706,12667706,12667706,12667706,12667706,12667706,12667707,12667707,12667707,12667707,12667707,12667707,12667707,12667708,12667708,12667708,12667708,12667708,12667708,12667708,12667709,12667709,12667709,12667709,12667709,12667710,12667710,12667711,12667711,12667711,12667711,12667711,12667711,12667712,12667712,12667712,12667712,12667712,12667701,12667712,12667701,12667712,12667701,12667713,12667702,12667713,12667703,12667713,12667703,12667711,12667714,12667703,12667711,12667714,12667703,12667712,12667703,12667712,12667703,12667712,12667703,12667704,12667704,12667704,12667704,12667704,12667704,12667704,12667705,12667705,12667705,12667705,12667705,12667705,12667705,12667706,12667706,12667706,12667706,12667706,12667707,12667707,12667709,12667708,12667708,12667708,12667708,12667708,12667708,12667709,12667714,12667714,12667713,12667712,12667711,12667710,12667725,12667724,12667723,12667722,12667721,12667720,12667719,12667719,12667718,12667717,12667716,12667715,12667714,12667713,12667713,12667713,12667713,12667713,12667713,12667713,12667714,12667714,12667714,12667714,12667714,12667714,12667714,12667715,12667715,12667716,12667716,12667716,12667716,12667716,12667717,12667717,12667717,12667717,12667717,12667717,12667717,12667719,12667719,12667719,12667719,12667719,12667719,12667719,12667720,12667720,12667720,12667720,12667720,12667720,12667720,12667721,12667721,12667721,12667721,12667722,12667721,12667735,12667735,12667734,12667733,12667732,12667731,12667730,12667729,12667729,12667728,12667727,12667726,12667725,12667724,12667724,12667725,12667725,12667725,12667725,12667725,12667725,12667725,12667727,12667726,12667726,12667726,12667727,12667727,12667727,12667728,12667728,12667728,12667728,12667728,12667728,12667728,12667729,12667729,12667729,12667729,12667729,12667729,12667729,12667730,12667730,12667730,12667743,12667742,12667741,12667741,12667740,12667739,12667738,12667737,12667736,12667735,12667735,12667734,12667733,12667733,12667733,12667733,12667733,12667734,12667734,12667734,12667734,12667735,12667734,12667734,12667735,12667735,12667736,12667735,12667735,12667736,12667736,12667737,12667737,12667737,12667737,12667737,12667737,12667737,12667738,12667738,12667738,12667738,12667738,12667738,12667738,12667739,12667739,12667739,12667739,12667739,12667740,12667740,12667740,12667740,12667741,12667741,12667741,12667741,12667741,12667742,12667742,12667742,12667741,12667741,12667741,12667742,12667743,12667743,12667742,12667743,12667743,12667743,12667756,12667757,12667757,12667757,12667757,12667757,12667757,12667757,12667758,12667758,12667758,12667758,12667758,12667758,12667758,12667759,12667759,12667759,12667759,12667759,12667760,12667760,12667761,12667761,12667761,12667761,12667761,12667761,12667762,12667762,12667762,12667762,12667762,12667762,12667762,12667762,12667763,12667763,12667763,12667763,12667764,12667763,12667765,12667764,12667764,12667765,12667765,12667765,12667765,12667766,12667766,12667766,12667766,12667766,12667766,12667766,12667767,12667770,12667770,12667770,12667770,12667770,12667770,12667771,12667771,12667772,12667772,12667772,12667772,12667772,12667772,12667773,12667773,12667773,12667773,12667773,12667773,12667774,12667774,12667774,12667774,12667774,12667774,12667774,12667775,12667775,12667775,12667775,12667775,12667775,12667776,12667777,12667777,12667777,12667777,12667777,12667777,12667777,12667778,12667778,12667778,12667778,12667778,12667778,12667778,12667779,12667779,12667779,12667779,12667779,12667779,12667779,12667781,12667781,12667781,12667781,12667781,12667781,12667781,12667782,12667782,12667782,12667782,12667782,12667782,12667783,12667783,12667783,12667783,12667783,12667783,12667783,12667784,12667784,12667784,12667784,12667784,12667784,12667784,12667785,12667785,12667785,12667785,12667786,12667776,12667786,12667785,12667776,12667787,12667776,12667787,12667776,12667777,12667787,12667787,12667777,12667787,12667777,12667787,12667777,12667767,12667787,12667777,12667767,12667788,12667777,12667767,12667788,12667777,12667767,12667788,12667778,12667768,12667778,12667768,12667778,12667769,12667778,12667769,12667778,12667769,12667778,12667769,12667778,12667769,12667779,12667769,12667769,12667770,12667770,12667770,12667770,12667770,12667770,12667770,12667771,12667771,12667771,12667771,12667771,12667771,12667771,12667772,12667772,12667766,12667773,12667766,12667773,12667766,12667773,12667766,12667773,12667767,12667773,12667768,12667774,12667768,12667774,12667768,12667768,12667768,12667768,12667768,12667769,12667769,12667769,12667769,12667769,12667769,12667770,12667770,12667770,12667770,12667770,12667770,12667770,12667771,12667771,12667771,12667771,12667772,12667772,12667772,12667773,12667773,12667773,12667773,12667773,12667773,12667773,12667774,12667774,12667774,12667774,12667774,12667774,12667774,12667775,12667776,12667775,12667775,12667776,12667776,12667775,12667777,12667777,12667777,12667777,12667777,12667777,12667777,12667778,12667778,12667778,12667778,12667778,12667778,12667778,12667779,12667779,12667779,12667779,12667779,12667779,12667779,12667780,12667781,12667781,12667781,12667781,12667781,12667781,12667782,12667782,12667782,12667782,12667782,12667783,12667783,12667784,12667784,12667784,12667784,12667784,12667784,12667785,12667785,12667785,12667786,12667786,12667785,12667786,12667787,12667787,12667787,12667787,12667787,12667787,12667787,12667788,12667788,12667788,12667788,12667788,12667788,12667788,12667789,12667789,12667801,12667801,12667802,12667802,12667802,12667803,12667803,12667803,12667803,12667803,12667803,12667803,12667804,12667804,12667804,12667804,12667804,12667804,12667801,12667804,12667801,12667805,12667801,12667805,12667801,12667801,12667802,12667802,12667802,12667802,12667802,12667802,12667803,12667804,12667804,12667803,12667804,12667804,12667804,12667804,12667805,12667805,12667805,12667805,12667805,12667805,12667805,12667806,12667806,12667806,12667806,12667806,12667806,12667806,12667807,12667807,12667807,12667807,12667807,12667807,12667808,12667809,12667809,12667809,12667809,12667809,12667809,12667810,12667810,12667810,12667810,12667810,12667810,12667810,12667811,12667811,12667811,12667811,12667811,12667811,12667811,12667812,12667812,12667812,12667812,12667813,12667812,12667813,12667814,12667814,12667814,12667814,12667814,12667814,12667814,12667815,12667815,12667815,12667815,12667815,12667815,12667815,12667816,12667816,12667816,12667816,12667817,12667817,12667817,12667817,12667817,12667818,12667818,12667818,12667818,12667818,12667818,12667818,12667818,12667818,12667818,12667818,12667817,12667816,12667816,12667816,12667817,12667817,12667817,12667817,12667817,12667817,12667818,12667818,12667818,12667819,12667819,12667819,12667819,12667819,12667819,12667819,12667820,12667820,12667820,12667820,12667820,12667820,12667820,12667821,12667821,12667821,12667822,12667822,12667822,12667823,12667823,12667824,12667824,12667824,12667824,12667824,12667825,12667825,12667825,12667825,12667825,12667825,12667825,12667826,12667826,12667826,12667826,12667826,12667826,12667826,12667826,12667827,12667828,12667828,12667828,12667828,12667828,12667828,12667829,12667829,12667829,12667829,12667829,12667829,12667829,12667830,12667830,12667830,12667830,12667830,12667830,12667830,12667831,12667831,12667831,12667831,12667832,12667832,12667833,12667833,12667833,12667833,12667833,12667833,12667833,12667822,12667834,12667823,12667834,12667823,12667834,12667823,12667834,12667823,12667834,12667823,12667834,12667823,12667834,12667823,12667835,12667824,12667835,12667824,12667835,12667824,12667836,12667824,12667836,12667824,12667836,12667824,12667824,12667825,12667825,12667825,12667825,12667825,12667825,12667826,12667826,12667827,12667826,12667827,12667827,12667827,12667827,12667828,12667828,12667828,12667828,12667828,12667828,12667828,12667829,12667829,12667829,12667829,12667829,12667829,12667829,12667830,12667830,12667831,12667831,12667831,12667830,12667831,12667832,12667832,12667832,12667832,12667832,12667832,12667832,12667833,12667833,12667833,12667833,12667833,12667833,12667833,12667834,12667834,12667834,12667838,12667838,12667838,12667838,12667839,12667839,12667839,12667839,12667839,12667839,12667839,12667840,12667840,12667840,12667840,12667840,12667841,12667841,12667842,12667842,12667842,12667842,12667842,12667842,12667842,12667843,12667843,12667843,12667854,12667854,12667860,12667861,12667861,12667861,12667865,12667865,12667865,12667865,12667866,12667867,12667867,12667867,12667867,12667867,12667867,12667868,12667868,12667868,12667868,12667868,12667868,12667868,12667869,12667869,12667869,12667869,12667869,12667869,12667869,12667870,12667871,12667871,12667870,12667871,12667871,12667871,12667872,12667872,12667872,12667872,12667872,12667872,12667872,12667873,12667873,12667873,12667873,12667873,12667873,12667873,12667874,12667875,12667874,12667875,12667875,12667875,12667875,12667876,12667876,12667876,12667876,12667876,12667876,12667876,12667877,12667877,12667877,12667877,12667877,12667877,12667878,12667878,12667878,12667879,12667879,12667879,12667879,12667880,12667880,12667880,12667880,12667880,12667880,12667880,12667881,12667881,12667881,12667881,12667881,12667881,12667881,12667882,12667882,12667882,12667882,12667882,12667883,12667882,12667884,12667884,12667884,12667884,12667884,12667884,12667884,12667885,12667885,12667885,12667885,12667885,12667885,12667885,12667886,12667888,12667887,12667886,12667886,12667886,12667887,12667888,12667888,12667888,12667888,12667888,12667888,12667888,12667889,12667889,12667889,12667889,12667889,12667889,12667888,12667890,12667890,12667890,12667890,12667890,12667890,12667890,12667891,12667891,12667891,12667891,12667891,12667891,12667891,12667892,12667892,12667892,12667892,12667892,12667892,12667893,12667893,12667893,12667894,12667893,12667894,12667894,12667895,12667895,12667895,12667895,12667895,12667895,12667895,12667896,12667896,12667896,12667896,12667896,12667896,12667896,12667897,12667897,12667897,12667905,12667905,12667905,12667905,12667906,12667906,12667906,12667906,12667906,12667906,12667906,12667907,12667907,12667907,12667907,12667907,12667907,12667907,12667908,12667909,12667922,12667921,12667920,12667919,12667918,12667918,12667917,12667916,12667915,12667914,12667913,12667912,12667912,12667911,12667911,12667911,12667911,12667911,12667911,12667913,12667913,12667913,12667913,12667913,12667913,12667913,12667914,12667914,12667914,12667914,12667914,12667914,12667914,12667915,12667915,12667915,12667915,12667915,12667915,12667916,12667916,12667916,12667916,12667916,12667917,12667917,12667918,12667918,12667918,12667918,12667918,12667918,12667918,12667919,12667919,12667919,12667919,12667919,12667919,12667919,12667920,12667920,12667920,12667920,12667921,12667921,12667921,12667922,12667922,12667922,12667922,12667922,12667922,12667922,12667923,12667923,12667923,12667923,12667923,12667923,12667923,12667924,12667924,12667924,12667924,12667924,12667924,12667923,12667922,12667925,12667925,12667923,12667922,12667921,12667923,12667921,12667916,12667923,12667921,12667918,12667921,12667918,12667921,12667918,12667921,12667918,12667918,12667917,12667917,12667918,12667918,12667918,12667918,12667920,12667920,12667921,12667921,12667928,12667928,12667928,12667928,12667929,12667930,12667930,12667930,12667930,12667930,12667930,12667930,12667931,12667931,12667931,12667931,12667931,12667931,12667931,12667932,12667932,12667932,12667932,12667933,12667933,12667933,12667934,12667934,12667934,12667934,12667934,12667934,12667934,12667935,12667935,12667935,12667935,12667935,12667935,12667935,12667936,12667936,12667936,12667936,12667936,12667936,12667936,12667938,12667938,12667938,12667938,12667938,12667938,12667938,12667939,12667939,12667939,12667939,12667939,12667939,12667939,12667940,12667940,12667940,12667940,12667940,12667940,12667940,12667942,12667942,12667942,12667942,12667942,12667942,12667942,12667943,12667943,12667943,12667943,12667943,12667943,12667943,12667944,12667944,12667944,12667944,12667944,12667944,12667944,12667945,12667945,12667945,12667945,12667945,12667946,12667947,12667947,12667947,12667947,12667947,12667947,12667947,12667948,12667948,12667948,12667948,12667948,12667948,12667948,12667949,12667949,12667949,12667949,12667949,12667950,12667950,12667951,12667951,12667951,12667951,12667951,12667951,12667951,12667952,12667952,12667952,12667952,12667952,12667952,12667952,12667953,12667953,12667953,12667953,12667953,12667953,12667953,12667954,12667954,12667955,12667955,12667955,12667955,12667955,12667956,12667956,12667956,12667956,12667956,12667956,12667956,12667957,12667957,12667957,12667957,12667957,12667957,12667957,12667958,12667959,12667959,12667959,12667959,12667959,12667959,12667960,12667960,12667960,12667960,12667960,12667960,12667960,12667961,12667961,12667958,12667961,12667958,12667962,12667959,12667961,12667959,12667959,12667959,12667959,12667959,12667959,12667960,12667960,12667960,12667960,12667961,12667961,12667961,12667962,12667962,12667962,12667962,12667962,12667962,12667962,12667963,12667963,12667963,12667963,12667963,12667963,12667964,12667964,12667964,12667964,12667965,12667964,12667964,12667966,12667966,12667966,12667966,12667966,12667966,12667966,12667967,12667967,12667967,12667967,12667967,12667967,12667967,12667968,12667968,12667968,12667968,12667968,12667977,12667977,12667979,12667979,12667978,12667979,12667979,12667979,12667979,12667980,12667980,12667980,12667980,12667980,12667980,12667980,12667981,12667981,12667981,12667981,12667981,12667981,12667981,12667982,12667982,12667983,12667983,12667983,12667983,12667983,12667984,12667984,12667984,12667984,12667984,12667984,12667984,12667980,12667985,12667981,12667985,12667981,12667985,12667982,12667985,12667982,12667982,12667982,12667982,12667982,12667982,12667983,12667983,12667983,12667983,12667983,12667970,12667983,12667972,12667984,12667972,12667984,12667972,12667984,12667972,12667984,12667972,12667984,12667983,12667972,12667984,12667984,12667972,12667984,12667973,12667984,12667973,12667984,12667973,12667984,12667973,12667984,12667973,12667973,12667973,12667974,12667981,12667981,12667983,12667982,12667983,12667983,12667984,12667984,12667984,12667984,12667983,12667984,12667983,12667984,12667984,12667984,12667984,12667984,12667984,12667984,12667985,12667985,12667985,12667985,12667985,12667985,12667985,12667986,12667986,12667987,12667977,12667987,12667978,12667987,12667977,12667987,12667977,12667987,12667977,12667988,12667977,12667988,12667978,12667988,12667986,12667967,12667979,12667988,12667986,12667968,12667979,12667986,12667968,12667979,12667968,12667979,12667968,12667979,12667968,12667979,12667968,12667980,12667978,12667968,12667980,12667978,12667970,12667978,12667970,12667978,12667969,12667969,12667969,12667969,12667969,12667971,12667971,12667971,12667971,12667971,12667971,12667971,12667972,12667972,12667972,12667972,12667972,12667972,12667972,12667973,12667973,12667973,12667973,12667973,12667973,12667974,12667975,12667975,12667975,12667975,12667975,12667975,12667975,12667976,12667976,12667976,12667976,12667976,12667976,12667976,12667977,12667977,12667977,12667977,12667977,12667977,12667976,12667978,12667978,12667978,12667978,12667978,12667978,12667978,12667979,12667979,12667979,12667979,12667984,12667984,12667985,12667985,12667985,12667985,12667985,12667985,12667985,12667986,12667986,12667987,12667987,12667986,12667987,12667987,12667988,12667988,12667988,12667988,12667988,12667988,12667988,12667989,12667989,12667989,12667989,12667989,12667989,12667989,12667990,12667990,12667990,12667990,12667990,12667990,12667991,12667992,12667992,12667992,12667992,12667992,12667992,12667992,12667993,12667993,12667993,12667993,12667993,12667993,12667993,12667993,12667994,12667993,12667993,12667993,12667993,12667993,12667994,12667994,12667994,12667994,12667994,12667994,12667994,12667995,12667995,12667995,12667995,12667995,12667995,12667996,12667996,12667997,12667997,12667996,12667996,12667996,12667998,12667998,12667997,12667998,12667998,12667998,12667998,12667999,12667999,12667999,12667999,12667999,12667999,12667999,12668000,12668000,12668000,12668000,12668000,12668000,12668000,12668001,12668001,12668002,12668002,12668002,12668002,12668002,12668003,12668003,12668002,12668002,12668002,12668002,12668002,12668003,12668003,12668003,12668003,12668003,12668003,12668004,12668005,12668004,12668004,12668004,12668005,12668005,12668005,12668006,12668006,12668006,12668006,12668006,12668006,12668006,12668007,12668007,12668007,12668007,12668007,12668007,12668007,12668008,12668008,12668008,12668008,12668009,12668009,12668009,12668010,12668010,12668010,12668010,12668010,12668010,12668010,12668011,12668011,12668011,12668011,12668011,12668011,12668012,12668012,12668012,12668012,12668012,12668012,12668012,12668013,12668013,12668014,12668014,12668014,12668014,12668014,12668015,12668015,12668015,12668015,12668015,12668015,12668015,12668016,12668016,12668016,12668016,12668016,12668016,12668016,12668017,12668018,12668018,12668018,12668018,12668018,12668018,12668019,12668013,12668019,12668016,12668019,12668017,12668019,12668027,12668027,12668027,12668027,12668027,12668027,12668028,12668028,12668029,12668029,12668029,12668029,12668029,12668030,12668030,12668030,12668030,12668030,12668030,12668030,12668031,12668031,12668031,12668032,12668032,12668032,12668032,12668033,12668033,12668033,12668033,12668033,12668033,12668033,12668034,12668034,12668034,12668034,12668034,12668034,12668034,12668035,12668035,12668035,12668035,12668035,12668035,12668035,12668037,12668037,12668037,12668037,12668037,12668037,12668037,12668038,12668038,12668038,12668038,12668038,12668038,12668038,12668039,12668039,12668039,12668039,12668039,12668039,12668039,12668041,12668041,12668041,12668041,12668041,12668041,12668041,12668042,12668042,12668042,12668042,12668042,12668042,12668042,12668043,12668043,12668043,12668043,12668043,12668041,12668043,12668041,12668043,12668041,12668044,12668041,12668041,12668041,12668042,12668042,12668042,12668042,12668034,12668042,12668034,12668042,12668034,12668042,12668034,12668043,12668034,12668044,12668043,12668034,12668043,12668034,12668043,12668035,12668043,12668035,12668043,12668035,12668035,12668035,12668035,12668035,12668036,12668036,12668036,12668036,12668036,12668036,12668037,12668037,12668037,12668037,12668037,12668037,12668037,12668038,12668039,12668039,12668039,12668039,12668039,12668039,12668040,12668040,12668045,12668044,12668043,12668042,12668041,12668041,12668041,12668041,12668054,12668053,12668052,12668051,12668051,12668050,12668049,12668048,12668047,12668046,12668045,12668045,12668044,12668044,12668044,12668044,12668044,12668044,12668045,12668045,12668045,12668045,12668045,12668045,12668045,12668046,12668046,12668046,12668046,12668047,12668047,12668047,12668048,12668048,12668048,12668048,12668048,12668048,12668048,12668049,12668049,12668049,12668049,12668049,12668049,12668049,12668050,12668050,12668050,12668051,12668051,12668051,12668050,12668051,12668051,12668052,12668052,12668052,12668052,12668052,12668053,12668065,12668064,12668063,12668062,12668061,12668060,12668060,12668059,12668058,12668057,12668056,12668055,12668054,12668056,12668056,12668056,12668056,12668056,12668056,12668057,12668057,12668057,12668057,12668057,12668057,12668057,12668058,12668058,12668058,12668058,12668058,12668058,12668058,12668059,12668060,12668060,12668059,12668059,12668059,12668060,12668061,12668061,12668061,12668061,12668061,12668061,12668061,12668062,12668062,12668062,12668062,12668062,12668062,12668062,12668063,12668063,12668063,12668063,12668063,12668064,12668064,12668065,12668065,12668065,12668065,12668065,12668065,12668065,12668066,12668066,12668066,12668066,12668066,12668066,12668066,12668067,12668067,12668068,12668068,12668068,12668068,12668067,12668069,12668069,12668069,12668069,12668069,12668069,12668069,12668070,12668070,12668070,12668070,12668070,12668070,12668070,12668071,12668071,12668071,12668071,12668071,12668071,12668072,12668073,12668077,12668077,12668077,12668076,12668076,12668077,12668078,12668078,12668078,12668078,12668078,12668078,12668079,12668079,12668079,12668080,12668080,12668080,12668079,12668080,12668081,12668081,12668081,12668081,12668081,12668081,12668082,12668082,12668082,12668082,12668082,12668082,12668082,12668083,12668083,12668083,12668083,12668083,12668083,12668083,12668085,12668085,12668085,12668085,12668085,12668085,12668085,12668086,12668086,12668086,12668086,12668086,12668086,12668086,12668087,12668087,12668087,12668087,12668087,12668087,12668087,12668088,12668089,12668088,12668088,12668089,12668089,12668089,12668090,12668090,12668090,12668090,12668090,12668090,12668090,12668091,12668091,12668091,12668091,12668091,12668091,12668091,12668092,12668092,12668092,12668093,12668093,12668093,12668093,12668094,12668094,12668094,12668094,12668094,12668094,12668094,12668095,12668095,12668095,12668095,12668095,12668095,12668095,12668096,12668096,12668097,12668097,12668097,12668096,12668096,12668098,12668098,12668098,12668098,12668108,12668108,12668108,12668109,12668109,12668109,12668109,12668109,12668109,12668110,12668110,12668110,12668110,12668111,12668110,12668110,12668111,12668111,12668111,12668112,12668112,12668112,12668112,12668113,12668113,12668113,12668113,12668113,12668113,12668113,12668114,12668114,12668114,12668114,12668114,12668114,12668114,12668115,12668116,12668116,12668116,12668116,12668116,12668116,12668117,12668106,12668117,12668107,12668117,12668107,12668117,12668107,12668117,12668107,12668117,12668107,12668117,12668107,12668118,12668107,12668118,12668108,12668118,12668108,12668118,12668108,12668118,12668108,12668119,12668108,12668108,12668108,12668109,12668109,12668109,12668109,12668109,12668109,12668109,12668110,12668111,12668111,12668111,12668111,12668111,12668111,12668112,12668112,12668112,12668112,12668112,12668112,12668115,12668116,12668116,12668116,12668116,12668116,12668116,12668117,12668117,12668117,12668117,12668117,12668117,12668117,12668119,12668119,12668119,12668119,12668119,12668119,12668119,12668120,12668120,12668120,12668120,12668120,12668120,12668120,12668121,12668121,12668121,12668121,12668121,12668121,12668121,12668123,12668122,12668122,12668122,12668122,12668123,12668123,12668124,12668124,12668124,12668124,12668124,12668124,12668122,12668124,12668122,12668125,12668122,12668122,12668122,12668122,12668123,12668123,12668123,12668123,12668124,12668124,12668124,12668125,12668125,12668125,12668125,12668125,12668125,12668125,12668126,12668126,12668126,12668126,12668126,12668129,12668129,12668130,12668130,12668130,12668130,12668130,12668130,12668130,12668131,12668131,12668131,12668131,12668131,12668131,12668132,12668133,12668133,12668133,12668133,12668133,12668133,12668133,12668134,12668134,12668134,12668135,12668135,12668136,12668136,12668144,12668144,12668144,12668144,12668144,12668144,12668145,12668145,12668145,12668145,12668145,12668145,12668146,12668146,12668146,12668147,12668147,12668147,12668147,12668147,12668148,12668148,12668148,12668148,12668148,12668148,12668148,12668149,12668149,12668149,12668149,12668149,12668149,12668149,12668150,12668151,12668151,12668151,12668151,12668151,12668151,12668152,12668152,12668152,12668152,12668152,12668152,12668152,12668153,12668153,12668153,12668153,12668153,12668153,12668154,12668155,12668155,12668155,12668154,12668154,12668155,12668155,12668156,12668156,12668156,12668156,12668156,12668156,12668156,12668157,12668157,12668157,12668157,12668157,12668157,12668157,12668158,12668158,12668158,12668158,12668159,12668159,12668159,12668160,12668160,12668160,12668160,12668160,12668160,12668160,12668161,12668161,12668161,12668166,12668166,12668166,12668167,12668167,12668167,12668167,12668167,12668167,12668167,12668168,12668168,12668168,12668168,12668168,12668168,12668168,12668169,12668170,12668170,12668170,12668169,12668169,12668170,12668171,12668171,12668171,12668171,12668171,12668171,12668171,12668172,12668172,12668172,12668172,12668172,12668172,12668172,12668173,12668173,12668173,12668173,12668173,12668174,12668174,12668175,12668175,12668175,12668175,12668175,12668175,12668175,12668176,12668176,12668176,12668176,12668176,12668176,12668176,12668177,12668177,12668178,12668178,12668178,12668178,12668177,12668178,12668179,12668179,12668179,12668179,12668179,12668179,12668180,12668180,12668180,12668180,12668180,12668180,12668181,12668181,12668181,12668181,12668181,12668181,12668181,12668183,12668183,12668183,12668183,12668183,12668183,12668183,12668184,12668184,12668184,12668184,12668184,12668184,12668184,12668185,12668185,12668185,12668185,12668185,12668185,12668185,12668186,12668187,12668187,12668186,12668186,12668186,12668186,12668187,12668187,12668187,12668187,12668187,12668187,12668187,12668188,12668188,12668188,12668188,12668188,12668188,12668188,12668189,12668189,12668189,12668189,12668190,12668190,12668190,12668191,12668191,12668191,12668191,12668191,12668191,12668191,12668192,12668192,12668192,12668192,12668192,12668192,12668192,12668193,12668192,12668192,12668192,12668192,12668192,12668193,12668193,12668193,12668193,12668193,12668193,12668194,12668195,12668195,12668195,12668194,12668194,12668194,12668194,12668195,12668195,12668195,12668195,12668195,12668195,12668195,12668196,12668196,12668196,12668196,12668197,12668197,12668197,12668198,12668198,12668198,12668198,12668198,12668198,12668198,12668199,12668199,12668199,12668199,12668199,12668199,12668199,12668200,12668200,12668200,12668200,12668200,12668201,12668200,12668201,12668201,12668216,12668216,12668216,12668216,12668216,12668217,12668217,12668218,12668218,12668218,12668218,12668218,12668219,12668219,12668219,12668219,12668219,12668219,12668219,12668220,12668220,12668220,12668220,12668220,12668220,12668220,12668221,12668221,12668221,12668221,12668221,12668221,12668223,12668223,12668223,12668223,12668223,12668223,12668223,12668224,12668224,12668224,12668224,12668224,12668224,12668224,12668225,12668225,12668225,12668225,12668225,12668226,12668225,12668227,12668227,12668227,12668227,12668227,12668227,12668227,12668228,12668228,12668228,12668228,12668228,12668228,12668228,12668229,12668229,12668229,12668229,12668229,12668230,12668229,12668230,12668230,12668230,12668231,12668231,12668231,12668231,12668232,12668232,12668232,12668232,12668232,12668232,12668232,12668233,12668233,12668233,12668233,12668233,12668233,12668233,12668235,12668235,12668235,12668235,12668235,12668235,12668235,12668236,12668236,12668236,12668236,12668236,12668236,12668236,12668237,12668237,12668237,12668237,12668237,12668237,12668237,12668238,12668238,12668238,12668238,12668238,12668239,12668239,12668240,12668240,12668240,12668240,12668240,12668240,12668240,12668241,12668241,12668241,12668241,12668241,12668241,12668242,12668242,12668241,12668244,12668243,12668242,12668242,12668243,12668243,12668243,12668243,12668243,12668243,12668243,12668244,12668244,12668244,12668244,12668244,12668244,12668244,12668245,12668245,12668246,12668245,12668246,12668246,12668246,12668246,12668247,12668247,12668247,12668247,12668247,12668261,12668261,12668260,12668259,12668258,12668258,12668258,12668258,12668259,12668259,12668259,12668259,12668259,12668259,12668259,12668260,12668260,12668260,12668260,12668260,12668260,12668260,12668262,12668262,12668262,12668262,12668262,12668262,12668262,12668263,12668263,12668263,12668263,12668263,12668263,12668263,12668264,12668264,12668264,12668264,12668264,12668264,12668265,12668265,12668265,12668265,12668265,12668265,12668266,12668267,12668267,12668267,12668267,12668267,12668267,12668267,12668267,12668268,12668268,12668268,12668268,12668268,12668268,12668268,12668269,12668269,12668269,12668282,12668281,12668280,12668279,12668279,12668278,12668277,12668276,12668275,12668274,12668273,12668273,12668272,12668272,12668272,12668272,12668272,12668272,12668273,12668273,12668274,12668274,12668273,12668273,12668274,12668275,12668275,12668275,12668275,12668288,12668287,12668286,12668286,12668285,12668284,12668283,12668282,12668281,12668280,12668280,12668279,12668278,12668277,12668278,12668278,12668278,12668279,12668279,12668279,12668279,12668279,12668277,12668279,12668277,12668279,12668277,12668280,12668277,12668279,12668279,12668280,12668280,12668287,12668287,12668287,12668287,12668287,12668289,12668289,12668289,12668296,12668296,12668296,12668296,12668298,12668298,12668298,12668298,12668298,12668298,12668298,12668299,12668299,12668299,12668299,12668299,12668299,12668290,12668299,12668291,12668300,12668291,12668300,12668291,12668300,12668298,12668291,12668300,12668298,12668292,12668300,12668299,12668292,12668287,12668299,12668292,12668288,12668292,12668288,12668292,12668288,12668292,12668288,12668288,12668288,12668285,12668288,12668285,12668289,12668285,12668289,12668286,12668289,12668286,12668286,12668286,12668286,12668286,12668286,12668287,12668287,12668287,12668287,12668287,12668287,12668287,12668288,12668288,12668288,12668288,12668288,12668289,12668289,12668290,12668290,12668290,12668290,12668290,12668290,12668290,12668291,12668291,12668291,12668291,12668291,12668291,12668291,12668292,12668292,12668292,12668292,12668292,12668292,12668292,12668293,12668293,12668294,12668294,12668294,12668294,12668294,12668295,12668295,12668295,12668295,12668295,12668295,12668295,12668296,12668296,12668296,12668296,12668296,12668296,12668296,12668297,12668297,12668297,12668298,12668298,12668298,12668298,12668299,12668299,12668299,12668299,12668299,12668299,12668299,12668300,12668300,12668300,12668300,12668300,12668300,12668300,12668301,12668301,12668301,12668301,12668301,12668301,12668301,12668302,12668303,12668303,12668303,12668303,12668303,12668303,12668304,12668304,12668304,12668304,12668304,12668304,12668304,12668305,12668305,12668305,12668305,12668305,12668306,12668306,12668307,12668307,12668307,12668307,12668307,12668307,12668308,12668308,12668308,12668315,12668315,12668315,12668315,12668316,12668316,12668316,12668316,12668316,12668316,12668316,12668317,12668317,12668317,12668317,12668317,12668317,12668317,12668319,12668318,12668318,12668319,12668319,12668319,12668319,12668320,12668320,12668320,12668320,12668320,12668320,12668320,12668321,12668321,12668321,12668321,12668321,12668321,12668321,12668322,12668322};

	//uint64 a[] = {11,10,10,10,10,10,10,10,10,10,10,11,11,22,22,22,22,22,22,22,22,22,22,23,23,22,22,22,22,22,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,23,22,23,29,29,29,29,29,29,29,29,30,30,30,29,29,29,29,29,29,29,29,29,28,26,24,22,22,22,21,21,21,21,21,21,22,22,22,21,21,22,22,22,22,22,22,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,22,22,22,22,22,22,22,22,22,22,21,22,22,23,22,22,22,22,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,21,22,22,22,22,22,22,22,22,22,22,22,22,23,22,22,22,22,22,22,22,22,22,22,21,32,32,33,33,33,33,33,33,33,33,33,32,34,33,33,33,33,33,33,33,33,33,33,32,33,33,33,33,33,33,33,32,32,32,32,32,33,32,32,32,32,32,32,32,32,32,32,32,33,32,32,32,32,32,32,32,32,32,32,33,33,32,32,32,32,32,32,32,32,32,32,33,33,32,31,31,31,31,31,30,30,30,30,31,31,31,31,31,31,30,31,30,30,30,30,31,31,31,31,31,31,31,30,28,26,25,23,22,20,19,19,19,19,18,18,19,18,18,18,19,19,19,18,19,19,19,19,18,18,18,18,19,19,19,19,19,19,18,18,18,18,18,19,19,19,19,18,16,14,12,11,11,11,11,12,12,14,12,12,15,13,19,17,15,13,11,12,12,12,11,12,11,12,12,15,13,11,11,24,24,24,24,23,23,23,23,23,23,23,23,24,24,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,25,23,23,23,23,23,24,24,24,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23,23,24,24,24,24,23,23,23,23,23,23,23,23,24,24,23,23,23,23,23,23,23,23,23,22,24,24,24,24,23,23,23,23,23,23,23,23,22,20,18,16,14,14,13,12,12,12,12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,13,31,31,31,31,30,31,30,30,30,30,31,31,31,31,46,46,46,46,46,46,45,45,46,46,46,46,46,46,46,46,45,45,45,46,47,47,47,47,47,46,46,46,46,46,46,46,47,47,47,47,47,47,47,46,46,46,46,46,47,47,47,47,47,46,46,46,46,46,46,47,47,47,47,47,47,46,46,46,46,46,46,47,47,47,47,47,47,46,46,46,46,46,46,47,47,47,47,47,47,46,47,46,46,46,46,47,47,47,47,47,46,46,46,46,46,46,46,46,47,47,47,47,45,43,41,40,38,36,34,34,35,35,34,34,34,34,34,41,41,41,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,40,40,41,41,41,41,41,41,41,41,41,40,41,41,42,41,41,41,55,55,55,55,55,55,54,54,55,55,55,55,55,55,55,54,54,54,54,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,55,54,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,54,54,54,55,55,55,55,55,55,55,55,55,55,55,54,60,58,56,62,60,58,56,54,52,50,49,47,46,44,42,40,38,37,36,36,36,36,36,36,37,37,37,36,36,36,36,36,35,33,31,29,28,26,24,22,21,21,21,21,21,22,21,21,22,22,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,22,22,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,23,23,22,22,22,22,22,36,36,36,36,36,37,37,37,37,37,37,37,36,36,36,36,37,37,37,37,37,37,36,37,35,39,37,36,37,37,37,36,36,37,37,36,36,36,36,36,37,37,37,37,37,37,37,36,36,36,36,36,37,37,35,33,31,31,30,30,30,29,29,29,30,30,30,30,30,30,30,30,30,29,30,30,30,30,30,30,30,30,30,30,29,29,29,30,30,30,30,30,30,30,30,30,30,29,29,30,30,30,28,26,25,23,21,19,17,15,15,16,16,16,17,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,25,25,25,25,26,26,26,26,26,25,25,25,26,25,25,25,26,26,26,26,26,26,26,25,25,25,25,37,38,38,38,38,38,37,37,37,37,37,37,37,38,38,38,37,38,38,38,38,37,37,37,37,38,38,38,38,38,37,37,37,37,37,37,37,38,38,38,38,37,38,38,37,37,37,37,37,38,38,38,38,38,38,37,37,37,37,37,37,38,38,38,37,37,38,37,36,36,36,36,35,36,36,36,36,36,36,36,36,35,35,36,36,37,36,36,36,36,36,36,36,36,36,35,36,36,36,36,36,36,34,32,30,28,26,24,24,22,22,22,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,21,21,21,21,21,22,22,22,22,21,21,21,21,21,21,21,21,22,22,22,21,30,30,30,30,30,30,30,31,31,30,30,30,30,30,30,30,30,30,29,31,31,42,42,42,42,42,42,41,41,41,41,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,42,42,42,42,41,41,41,41,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,42,42,42,41,41,41,41,41,42,42,42,42,42,41,41,41,41,41,41,41,42,42,42,42,40,38,36,34,32,31,31,32,32,32,32,32,32,32,44,42,40,39,37,36,34,32,32,32,32,32,32,32,31,31,32,31,29,27,26,24,22,20,20,20,19,19,19,20,20,20,20,20,20,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,20,20,20,20,20,20,20,21,21,21,21,21,22,22,21,21,21,21,21,21,21,21,21,22,21,22,22,22,22,21,21,21,21,36,36,37,37,37,37,37,37,37,37,37,36,36,36,37,37,37,37,37,37,37,37,36,36,36,36,37,37,37,37,37,37,37,37,37,37,36,36,37,37,37,37,37,37,37,37,37,36,36,36,37,37,37,37,37,37,37,36,37,37,36,36,37,37,37,37,37,38,37,37,37,36,36,36,37,37,37,37,35,33,31,31,29,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,28,28,28,26,24,23,21,19,17,17,17,17,17,17,17,17,17,17,16,16,16,17,16,17,17,16,17,17,17,17,18,17,17,17,17,17,16,16,17,17,17,17,17,17,17,17,16,17,17,16,17,17,17,17,17,17,18,17,17,17,17,17,17,18,17,17,17,17,17,17,17,16,17,17,18,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,16,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,16,18,17,17,17,17,17,17,22,20,18,17,15,17,16,16,16,16,15,15,15,15,15,15,15,16,16,16,16,16,16,15,15,15,15,15,15,16,16,14,12,10,8,6,4,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,6,7,6,6,6,6,6,6,7,7,7,7,7,6,6,6,6,6,6,6,7,7,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,6,6,6,6,6,6,17,18,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,31,29,27,25,24,22,20,19,17,17,17,17,17,17,17,17,17,17,18,17,26,24,22,20,18,17,17,17,17,17,16,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,16,17,17,19,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,17,17,17,18,17,17,17,17,17,16,17,16,17,17,17,17,17,17,17,17,17,17,16,16,17,17,17,17,17,17,17,17,17,17,16,16,17,17,17,17,17,17,17,17,17,17,16,16,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,18,17,17,16,17,17,31,31,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,32,31,31,31,30,28,26,25,26,25,25,25,26,26,26,26,26,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,25,25,24,24,25,25,25,25,25,25,25,25,24,24,25,25,25,25,25,23,21,19,17,15,14,14,14,15,15,15,15,14,14,14,14,14,14,14,14,15,15,14,14,14,14,14,14,14,15,15,14,14,14,14,14,14,14,14,14,14,15,15,14,15,14,14,14,14,14,14,14,14,15,15,15,14,25,25,25,25,25,25,25,24,25,25,25,25,26,25,29,29,29,29,29,29,30,30,30,29,29,29,29,30,29,29,29,29,30,30,30,30,30,29,29,29,29,29,29,29,30,30,30,30,30,29,29,29,29,29,29,29,30,30,30,30,30,29,29,29,29,29,29,30,30,30,30,30,31,30,29,29,29,29,29,30,30,30,30,30,30,30,29,29,29,29,29,30,30,30,30,29,29,29,29,29,29,31,29,30,30,30,30,30,29,30,29,29,27,25,24,23,21,19,17,15,15,16,15,15,15,15,15,16,16,16,16,15,15,15,15,15,15,15,15,16,16,16,16,15,15,16,15,15,15,15,15,16,16,16,15,15,15,15,15,15,15,15,15,16,16,16,15,15,15,15,15,15,15,15,15,16,15,15,15,14,14,14,14,15,15,21,21,26,29,27,26,28,26,26,26,26,26,26,27,27,27,26,26,26,26,26,26,26,26,26,27,27,26,26,26,26,26,26,26,26,26,26,27,27,27,27,26,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,26,26,26,26,26,26,26,27,27,27,26,26,26,26,26,26,26,26,26,25,23,21,19,17,16,16,16,15,15,15,15,16,16,16,16,16,16,16,14,12,11,10,10,11,11,11,11,11,11,11,11,11,11,11,10,12,12,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,10,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,11,11,12,11,11,11,11,11,11,20,21,20,21,21,21,21,21,21,21,21,21,21,21,20,21,21,21,21,21,21,21,21,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,24,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,21,21,21,21,21,21,21,21,20,21,21,20,21,21,21,21,21,21,21,21,19,17,15,15,15,13,11,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,9,9,9,9,10,10,10,10,10,10,9,10,10,9,10,9,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,11,10,11,11,10,10,10,24,24,25,30,30,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,29,29,29,29,29,30,30,30,30,30,30,30,29,29,29,29,29,30,30,30,30,39,39,39,39,39,39,38,38,39,39,39,40,39,39,39,38,38,38,39,38,39,39,39,39,39,39,39,39,39,38,38,38,39,39,39,39,39,39,39,38,38,38,38,39,39,39,39,39,39,39,39,39,39,38,38,39,37,35,33,31,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,28,28,29,29,29,29,29,29,29,29,29,29,29,28,29,29,29,29,29,29,29,29,29,29,28,28,29,29,29,29,29,29,29,29,29,29,28,28,29,29,29,29,29,29,41,41,41,41,41,40,41,41,41,41,41,41,41,41,41,40,40,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,40,40,41,41,41,41,41,41,41,41,41,41,40,41,42,42,41,41,41,41,41,41,41,41,41,40,41,41,41,41,41,41,41,41,40,41,41,40,41,41,41,41,41,41,41,41,41,41,41,40,41,41,41,41,41,41,41,41,40,41,40,41,41,41,41,39,37,35,33,31,29,27,26,26,26,24,22,21,21,21,21,21,21,21,21,22,22,21,21,22,21,21,20,20,20,21,21,22,22,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,19,17,15,14,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,13,23,22,22,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,23,23,23,23,23,23,23,23,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,20,19,17,15,13,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,12,12,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,12,12,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,10,11,12,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,12,12,11,11,11,11,11,11,19,19,20,20,20,20,20,19,20,20,19,19,19,19,20,20,20,20,20,20,20,19,19,19,19,19,20,19,18,18,16,14,13,11,9,8,8,8,9,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,8,8,8,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,8,9,9,9,9,8,8,8,8,8,8,8,9,9,9,8,8,9,9,8,8,8,8,8,9,9,9,9,9,8,8,8,21,21,21,21,22,22,22,21,21,21,21,21,21,21,21,21,22,21,22,21,21,21,21,21,21,21,21,21,22,22,22,21,21,21,21,31,31,31,31,31,32,32,31,31,31,31,31,31,31,31,31,31,32,32,32,31,31,31,31,31,31,31,31,31,32,32,32,31,31,31,31,33,31,31,31,32,32,32,32,32,31,31,31,31,31,31,31,32,32,32,32,31,31,31,34,32,31,31,35,34,32,32,32,31,31,31,31,31,31,31,31,32,32,32,31,31,31,31,31,31,31,31,31,32,32,32,32,31,31,31,31,31,31,31,31,32,32,32,31,31,31,31,31,31,31,31,31,32,32,32,31,31,31,31,31,31,31,31,32,44,44,44,42,40,38,36,35,35,35,35,36,36,35,36,36,35,35,35,35,35,35,35,36,36,36,36,36,35,35,35,35,35,35,35,36,35,35,36,35,35,35,35,35,35,35,35,36,36,36,36,35,35,35,35,35,35,35,35,36,35,38,38,38,38,38,38,37,37,43,43,44,44,43,43,43,43,43,43,43,43,43,44,44,43,43,43,43,43,43,43,43,43,43,44,44,44,43,43,43,43,43,43,43,43,43,43,41,39,37,35,34,32,30,30,30,30,30,31,31,30,31,31,30,30,30,30,30,30,30,31,31,31,31,30,30,30,30,30,30,30,30,31,31,31,31,31,30,31,29,27,25,23,22,21,21,21,21,20,20,20,20,20,20,20,20,21,21,20,21,21,20,20,20,20,20,35,35,35,35,35,36,36,36,35,36,35,35,35,35,35,35,35,36,36,36,36,35,35,35,35,35,35,35,35,36,36,36,35,36,35,35,35,35,35,35,35,36,36,36,36,36,36,35,35,35,35,35,35,36,36,36,35,35,35,36,35,35,35,35,35,36,36,36,36,36,35,35,35,35,35,35,36,36,36,36,35,35,35,35,35,35,35,35,36,36,36,36,36,36,35,35,35,35,35,35,36,36,34,32,30,28,26,24,23,23,23,22,23,23,23,23,23,23,23,23,23,25,25,25,26,26,26,26,26,26,25,26,26,26,25,25,26,26,26,26,26,26,26,25,25,25,25,25,26,26,26,26,26,26,26,25,26,26,25,25,26,28,26,26,25,23,23,23,23,23,23,25,28,26,24,22,20,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,24,24,24,24,24,24,24,24,25,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,20,19,17,15,13,11,10,10,9,9,9,9,9,9,9,9,18,17,15,13,11,9,10,9,9,9,9,9,8,10,10,10,9,9,18,16,14,12,10,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,21,22,22,22,21,21,21,21,21,21,21,22,22,22,22,21,21,21,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21,22,22,22,21,21,21,21,21,21,19,18,18,19,19,19,19,19,19,18,18,18,18,18,18,19,19,19,19,19,19,18,18,18,18,18,19,19,19,18,18,19,18,18,18,18,18,18,19,19,19,19,19,19,19,18,18,18,18,18,19,17,17,17,16,14,13,12,12,12,12,12,12,13,13,12,12,12,12,12,12,12,12,12,12,12,25,25,25,25,25,25,25,25,25,24,25,25,25,25,26,25,25,25,25,24,25,25,26,25,25,25,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,38,37,37,37,38,38,38,38,37,37,37,38,37,37,37,42,42,42,42,43,42,42,42,42,41,41,41,42,43,42,42,42,42,42,41,42,41,41,41,42,42,42,42,42,42,42,42,41,41,41,41,43,42,42,42,42,42,42,42,42,42,42,41,42,42,42,42,42,42,42,42,41,41,41,41,42,42,42,42,42,42,42,42,41,42,42,41,42,42,43,42,42,42,42,42,42,41,41,41,42,42,42,42,42,40,38,36,34,32,30,30,31,31,31,31,31,31,31,30,30,30,30,30,31,31,31,31,31,31,30,31,30,30,30,30,31,31,31,31,31,31,31,30,30,30,30,31,31,31,31,31,31,31,31,30,30,30,30,31,31,31,31,31,31,31,30,30,30,44,43,44,44,44,44,44,44,44,44,44,43,43,43,45,44,44,44,44,44,44,44,44,44,43,53,54,54,53,53,53,54,53,53,53,53,53,53,54,54,54,54,54,53,53,53,53,53,53,53,54,54,54,53,53,54,53,54,52,50,48,46,45,43,41,41,40,40,40,40,40,40,40,40,41,41,41,41,40,41,41,40,40,40,40,40,41,41,41,41,41,40,40,40,40,40,40,41,41,41,41,40,40,40,40,40,40,38,36,36,34,32,30,28,28,28,28,28,27,27,28,28,33,31,29,28,28,28,26,24,23,24,23,24,26,26,24,24,24,24,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,23,23,23,24,24,24,24,24,24,24,24,36,36,36,36,37,37,36,36,36,37,36,36,36,36,36,36,37,37,37,37,37,37,36,36,36,36,36,36,37,37,37,36,36,36,36,36,36,36,36,36,37,37,37,35,35,35,35,35,35,35,35,35,36,36,36,36,35,35,35,35,35,35,35,36,35,35,36,35,35,35,35,35,35,35,35,36,36,36,36,35,36,36,36,36,36,36,35,36,36,36,36,36,36,36,36,36,35,35,35,36,36,36,34,32,30,28,27,25,23,22,22,23,23,23,24,23,23,23,23,22,22,22,22,23,23,24,23,23,22,22,22,25,23,21,20,19,17,15,13,13,13,13,13,13,13,13,13,14,14,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,17,13,13,13,13,13,13,18,19,19,19,19,20,19,18,19,18,19,18,19,18,18,18,19,19,19,19,19,19,19,18,18,18,18,18,19,19,19,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,18,18,18,18,18,18,19,19,19,19,18,19,18,18,18,18,18,25,24,22,20,19,19,18,20,18,18,18,18,18,19,19,19,19,18,18,18,18,18,18,18,19,19,19,19,19,19,18,16,14,12,10,8,7,6,6,6,6,6,6,6,6,6,6,5,6,6,6,6,6,6,6,6,6,5,5,14,13,12,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,10,11,13,11,11,11,12,12,11,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,22,22,22,22,22,22,22,21,21,21,22,21,22,22,22,22,22,22,22,22,21,21,22,21,22,22,22,22,22,22,22,22,22,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,21,23,23,22,22,22,22,22,22,22,21,22,21,22,22,22,21,19,17,16,16,16,16,16,16,17,17,17,17,17,17,16,16,16,16,16,20,19,17,17,17,20,18,16,16,16,16,16,16,17,17,17,17,17,17,16,16,16,16,16,17,17,17,17,17,17,17,16,16,16,16,16,17,17,17,17,17,17,16,16,16,16,16,16,17,17,30,28,28,28,28,28,28,28,28,27,28,28,28,29,28,28,28,28,28,28,28,28,29,28,28,28,28,28,28,28,28,28,27,27,28,29,28,28,28,28,28,28,28,28,27,28,29,28,28,26,24,23,23,23,23,23,22,23,23,23,23,23,23,23,23,23,22,22,22,23,23,23,23,23,23,23,23,23,23,22,23,23,23,23,23,23,23,23,23,23,23,22,22,23,23,23,23,23,23,23,23,23,22,22,22,22,22,21,19,17,15,13,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,12,12,12,12,12,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,12,12,12,11,12,11,11,11,11,11,11,11,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25,26,26,25,26,26,26,26,26,26,26};

	//uint64 a[] = {1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2};

	//uint64 a[] = {942086535,942086535,942086535,942086535,942086536,942086535,942086536,942086536,942086536,942086536,942086536,942086536,942086536,942086536,942086536,942086536,942086536,942086537,942086536,942086537,942086536,942086537,942086537,942086537,942086537,942086538,942086537,942086538,942086537,942086538,942086538,942086538,942086538,942086538,942086538,942086539,942086538,942086538,942086539,942086538,942086539,942086538,942086539,942086539,942086539,942086539,942086539,942086539,942086540,942086539,942086540,942086540,942086539,942086540,942086539,942086540,942086540,942086540,942086540,942086540,942086541,942086541,942086540,942086541,942086541,942086543,942086550,942086550,942086544,942086549,942086543,942086549,942086544,942086550,942086543,942086549,942086544,942086550,942086544,942086549,942086544,942086550,942086544,942086550,942086545,942086550,942086544,942086551,942086545,942086551,942086544,942086551,942086545,942086551,942086545,942086551,942086545,942086545,942086544,942086545,942086545,942086545,942086545,942086546,942086545,942086546,942086545,942086546,942086546,942086546,942086546,942086546,942086546,942086547,942086546,942086546,942086547,942086546,942086547,942086546,942086547,942086547,942086547,942086547,942086547,942086547,942086548,942086547,942086548,942086548,942086548,942086548,942086548,942086548,942086549,942086548,942086549,942086548,942086549,942086549,942086548,942086549,942086548,942086549,942086549,942086549,942086549,942086550,942086549,942086549,942086549,942086563,942086564,942086563,942086563,942086563,942086563,942086564,942086563,942086564,942086564,942086564,942086564,942086553,942086564,942086554,942086564,942086553,942086565,942086554,942086564,942086553,942086564,942086554,942086564,942086554,942086564,942086554,942086565,942086554,942086564,942086565,942086555,942086565,942086554,942086565,942086555,942086554,942086565,942086555,942086565,942086565,942086555,942086566,942086555,942086555,942086566,942086555,942086566,942086555,942086565,942086556,942086566,942086555,942086566,942086556,942086566,942086555,942086566,942086555,942086566,942086556,942086566,942086555,942086566,942086556,942086566,942086556,942086556,942086556,942086556,942086556,942086557,942086556,942086557,942086556,942086557,942086557,942086556,942086557,942086556,942086556,942086556,942086557,942086556,942086557,942086557,942086557,942086557,942086557,942086557,942086558,942086557};

	uint64 a[] = {8079,8079,8079,8079,8080,8081,8081,8082,8082,8083,8083,8083,8084,8084,8085,8085,8086,8086,8087,8087,8088,8103,8104,8104,8104,8104,8105,8105,8106,8106,8107,8107,8108,8108,8109,8109,8110,8110,8111,8111,8112,8112,8112,8112,8112,8113,8113,8114,8114,8115,8115,8116,8116,8117,8117,8118,8118,8119,8119,8120,8120,8120,8121,8121,8122,8121,8122,8122,8123,8123,8124,8124,8124,8125,8125,8126,8126,8127,8127,8128,8128,8129,8129,8130,8130,8131,8131,8131,8131,8132,8132,8133,8133,8134,8134,8134,8135,8135,8136,8136,8137,8137,8138,8136,8138,8137,8139,8137,8139,8138,8140,8140,8138,8141,8139,8140,8139,8141,8140,8140,8141,8140,8141,8141,8142,8141,8142,8142,8143,8143,8143,8144,8143,8144,8143,8145,8143,8145,8144,8146,8144,8144,8146,8145,8147,8145,8147,8146,8148,8146,8147,8147,8148,8147,8148,8148,8149,8148,8149,8148,8150,8149,8150,8149,8151,8150,8150,8151,8151,8152,8152,8152,8152,8153,8153,8154,8154,8155,8155,8156,8156,8157,8157,8158,8158,8159,8159,8160,8160,8161,8161,8161,8162,8161,8162,8162,8163,8163,8164,8164,8164,8165,8165,8166,8166,8167,8167,8168,8168,8169,8169,8170,8170,8170,8170,8171,8171,8172,8172,8173,8173,8174,8174,8174,8175,8175,8176,8176,8177,8177,8178,8178,8179,8179,8180,8179,8180,8180,8181,8181,8182,8182,8183,8183,8184,8184,8185,8185,8186,8186,8187,8187,8188,8188,8188,8189,8189,8189,8189,8190,8190,8191,8191,8191,8192,8192,8193,8193,8194,8194,8195,8195,8196,8196,8197,8197,8198,8198,8199,8199,8199,8199,8200,8200,8201,8201,8202,8202,8203,8203,8203,8204,8204,8205,8205,8205,8205,8206,8206,8207,8207,8207,8207,8208,8208,8209,8209,8210,8210,8211,8211,8212,8211,8212,8212,8213,8213,8214,8214,8215,8215,8215,8216,8216,8217,8217,8218,8218,8219,8219,8220,8219,8220,8220,8221,8221,8222,8222,8222,8223,8223,8224,8224,8225,8224,8225,8225,8226,8242,8242,8243,8243,8244,8244,8244,8245,8245,8246,8246,8243,8243,8244,8244,8245,8245,8246,8246,8247,8247,8248,8248,8248,8248,8248,8249,8250,8250,8247,8248,8248,8249,8249,8250,8250,8251,8251,8252,8252,8253,8252,8253,8253,8253,8254,8254,8253,8253,8254,8254,8255,8255,8256,8256,8256,8256,8257,8257,8258,8258,8259,8259,8260,8260,8261,8261,8262,8262,8262,8263,8264,8264,8264,8260,8259,8260,8260,8261,8261,8262,8262,8263,8263,8263,8264,8264,8265,8265,8266,8266,8267,8267,8267,8267,8268,8268,8269,8269,8270,8270,8271,8271,8272,8272,8272,8273,8273,8274,8274,8274,8274,8275,8275,8276,8276,8277,8277,8276,8276,8276,8276,8277,8277,8278,8278,8279,8279,8280,8280,8280,8280,8281,8281,8282,8282,8283,8283,8281,8282,8282,8267,8267,8268,8268,8269,8269,8270,8270,8271,8270,8262,8263,8263,8264,8264,8265,8265,8266,8266,8267,8267,8268,8268,8269,8269,8269,8269,8270,8270,8271,8271,8272,8272,8272,8273,8273,8274,8275,8275,8275,8276,8276,8277,8277,8278,8278,8279,8279,8279,8279,8280,8280,8281,8281,8282,8282,8283,8283,8284,8284,8285,8285,8285,8286,8286,8287,8286,8287,8287,8288,8288,8289,8289,8290,8290,8290,8291,8291,8292,8292,8293,8293,8294,8293,8294,8294,8295,8295,8296,8296,8297,8297,8298,8298,8299,8299,8299,8300,8300,8301,8301,8302,8302,8303,8302,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8308,8309,8309,8310,8310,8311,8311,8311,8311,8312,8312,8313,8313,8314,8314,8314,8315,8315,8316,8317,8317,8318,8318,8319,8319,8320,8319,8320,8320,8321,8321,8321,8322,8322,8323,8323,8324,8324,8325,8325,8325,8325,8326,8326,8327,8327,8328,8328,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8334,8334,8334,8334,8335,8335,8336,8336,8337,8337,8338,8338,8339,8339,8340,8340,8341,8341,8341,8342,8342,8345,8345,8346,8346,8353,8353,8352,8353,8352,8353,8353,8352,8353,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8334,8333,8334,8334,8335,8335,8336,8336,8337,8337,8338,8338,8339,8339,8339,8339,8339,8340,8340,8341,8341,8342,8342,8343,8343,8344,8344,8345,8344,8345,8345,8346,8346,8347,8347,8347,8347,8348,8348,8347,8348,8347,8348,8346,8346,8345,8346,8345,8346,8345,8345,8346,8346,8345,8346,8346,8347,8347,8347,8348,8346,8347,8347,8347,8347,8348,8347,8348,8347,8348,8346,8347,8320,8321,8321,8322,8322,8323,8323,8324,8324,8325,8325,8325,8325,8325,8326,8326,8327,8327,8328,8328,8329,8329,8329,8329,8330,8330,8331,8331,8332,8332,8332,8333,8333,8334,8334,8335,8335,8336,8336,8337,8337,8338,8338,8339,8338,8335,8339,8339,8339,8335,8340,8334,8340,8341,8341,8342,8342,8343,8344,8344,8345,8345,8346,8346,8345,8346,8346,8347,8347,8348,8348,8348,8292,8348,8293,8349,8293,8349,8292,8349,8293,8349,8293,8349,8294,8349,8294,8350,8295,8295,8296,8296,8296,8297,8297,8298,8298,8299,8299,8300,8300,8301,8301,8302,8302,8302,8302,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8309,8309,8310,8310,8311,8311,8311,8312,8311,8312,8312,8313,8313,8314,8314,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8320,8321,8320,8321,8321,8322,8322,8323,8323,8324,8324,8324,8325,8325,8326,8326,8327,8327,8328,8328,8328,8328,8329,8329,8327,8328,8328,8329,8328,8329,8329,8329,8329,8330,8330,8330,8327,8328,8328,8329,8328,8329,8328,8328,8328,8328,8329,8329,8330,8329,8330,8300,8301,8301,8302,8302,8302,8302,8303,8303,8304,8304,8305,8305,8302,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8307,8307,8308,8308,8309,8309,8310,8310,8311,8311,8312,8312,8313,8313,8314,8314,8315,8315,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8320,8321,8321,8322,8322,8322,8323,8322,8323,8323,8324,8324,8325,8325,8326,8326,8327,8327,8328,8327,8328,8328,8328,8328,8328,8329,8328,8329,8329,8330,8329,8330,8330,8331,8331,8331,8331,8332,8331,8332,8332,8332,8332,8332,8333,8332,8333,8333,8334,8333,8303,8304,8304,8304,8305,8305,8306,8305,8306,8306,8307,8307,8308,8308,8309,8309,8310,8310,8311,8311,8311,8312,8312,8313,8313,8314,8314,8315,8314,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8320,8321,8321,8322,8322,8322,8323,8323,8324,8324,8324,8324,8325,8325,8325,8326,8326,8327,8327,8327,8327,8328,8328,8328,8328,8329,8329,8329,8329,8330,8327,8328,8328,8328,8328,8291,8329,8329,8291,8292,8329,8292,8329,8293,8330,8325,8293,8326,8294,8326,8294,8327,8295,8326,8295,8326,8294,8327,8295,8327,8295,8296,8327,8296,8327,8297,8328,8297,8328,8298,8328,8298,8299,8299,8300,8300,8301,8301,8302,8302,8303,8303,8304,8304,8304,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8309,8309,8310,8309,8309,8310,8310,8310,8310,8311,8311,8312,8311,8312,8312,8312,8312,8313,8313,8313,8313,8314,8314,8314,8314,8315,8315,8315,8315,8316,8316,8316,8316,8330,8330,8330,8326,8326,8327,8327,8296,8296,8297,8297,8298,8298,8298,8299,8299,8300,8300,8301,8301,8301,8301,8302,8302,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8309,8309,8309,8310,8310,8310,8310,8311,8311,8311,8312,8312,8313,8313,8314,8314,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8319,8320,8321,8321,8321,8322,8323,8323,8323,8324,8323,8324,8324,8324,8324,8324,8325,8325,8325,8325,8326,8325,8326,8326,8327,8326,8327,8327,8328,8328,8329,8329,8329,8329,8330,8330,8330,8345,8346,8345,8345,8346,8346,8345,8346,8296,8297,8297,8298,8298,8299,8299,8300,8300,8300,8301,8301,8302,8302,8303,8303,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8309,8309,8310,8310,8310,8311,8312,8312,8313,8312,8313,8313,8313,8314,8314,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8320,8321,8321,8321,8321,8322,8322,8323,8323,8324,8324,8324,8325,8325,8326,8326,8327,8327,8328,8328,8329,8329,8329,8329,8330,8330,8330,8331,8331,8332,8332,8333,8333,8334,8334,8335,8335,8336,8336,8337,8337,8338,8338,8339,8339,8338,8339,8339,8340,8340,8341,8341,8342,8342,8343,8343,8344,8344,8345,8345,8345,8345,8346,8346,8346,8346,8347,8347,8347,8347,8348,8348,8349,8348,8349,8349,8349,8349,8349,8350,8350,8350,8350,8350,8316,8317,8317,8318,8318,8319,8319,8319,8319,8320,8320,8320,8321,8321,8322,8322,8323,8323,8324,8324,8325,8325,8326,8326,8327,8327,8327,8328,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8334,8334,8335,8335,8336,8336,8336,8336,8337,8337,8338,8338,8338,8339,8339,8340,8341,8341,8342,8342,8342,8341,8342,8343,8343,8344,8344,8344,8344,8344,8344,8345,8345,8344,8345,8345,8346,8346,8346,8346,8347,8347,8347,8347,8348,8349,8348,8348,8349,8348,8349,8349,8349,8350,8349,8350,8315,8316,8316,8317,8317,8318,8318,8318,8318,8319,8319,8320,8320,8321,8321,8322,8322,8323,8323,8324,8324,8325,8325,8326,8326,8327,8327,8327,8328,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8333,8334,8334,8335,8335,8336,8336,8337,8337,8337,8337,8338,8338,8339,8339,8340,8340,8341,8341,8341,8342,8342,8343,8342,8343,8343,8344,8343,8344,8344,8344,8344,8345,8345,8346,8346,8347,8347,8347,8347,8348,8348,8349,8349,8350,8350,8350,8350,8311,8350,8312,8351,8312,8351,8312,8352,8313,8352,8313,8352,8314,8352,8314,8353,8315,8353,8314,8354,8315,8354,8315,8355,8316,8355,8316,8354,8317,8355,8317,8356,8318,8356,8318,8356,8319,8357,8319,8357,8320,8358,8320,8358,8321,8358,8321,8358,8322,8359,8322,8358,8323,8323,8322,8323,8323,8324,8324,8325,8325,8326,8326,8326,8327,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8331,8332,8332,8333,8333,8329,8328,8328,8328,8329,8329,8329,8329,8330,8279,8330,8329,8279,8330,8279,8330,8280,8331,8280,8330,8280,8331,8281,8331,8281,8331,8282,8282,8282,8283,8283,8284,8284,8285,8285,8285,8285,8286,8286,8287,8287,8288,8288,8289,8289,8290,8290,8291,8291,8292,8292,8293,8293,8293,8294,8293,8294,8294,8295,8295,8296,8296,8297,8297,8298,8298,8299,8299,8300,8300,8301,8301,8301,8302,8302,8302,8302,8303,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8309,8309,8309,8310,8310,8310,8310,8311,8311,8312,8309,8310,8310,8311,8311,8311,8311,8311,8311,8312,8312,8312,8312,8313,8312,8313,8313,8314,8279,8279,8280,8280,8280,8280,8281,8281,8281,8282,8282,8283,8283,8284,8284,8285,8284,8285,8285,8281,8281,8282,8282,8282,8282,8283,8283,8284,8284,8285,8285,8286,8286,8287,8287,8288,8288,8289,8288,8288,8289,8289,8290,8290,8291,8291,8292,8292,8293,8293,8294,8294,8293,8293,8294,8294,8295,8295,8296,8296,8297,8295,8295,8296,8296,8297,8297,8298,8298,8299,8299,8300,8300,8300,8301,8301,8301,8302,8302,8303,8303,8304,8302,8303,8303,8304,8303,8303,8304,8303,8304,8304,8304,8304,8305,8299,8300,8300,8301,8301,8302,8302,8303,8303,8301,8302,8302,8302,8301,8302,8302,8303,8303,8304,8304,8303,8303,8304,8304,8304,8304,8305,8304,8305,8305,8306,8292,8293,8293,8294,8293,8294,8294,8295,8295,8295,8296,8296,8297,8297,8298,8298,8298,8299,8300,8300,8300,8301,8301,8301,8301,8302,8302,8303,8303,8304,8304,8305,8304,8305,8305,8306,8306,8306,8321,8320,8321,8320,8321,8321,8321,8321,8321,8322,8322,8323,8322,8322,8323,8323,8324,8324,8325,8325,8324,8325,8325,8325,8326,8325,8326,8326,8326,8326,8327,8327,8327,8292,8293,8293,8294,8294,8295,8295,8296,8295,8295,8290,8290,8291,8291,8292,8292,8293,8293,8294,8294,8295,8294,8295,8295,8296,8296,8296,8297,8297,8298,8298,8299,8299,8298,8299,8299,8300,8300,8300,8301,8301,8302,8302,8303,8303,8304,8304,8305,8305,8306,8306,8306,8306,8306,8307,8307,8308,8308,8309,8309,8310,8310,8311,8311,8312,8312,8313,8313,8314,8314,8315,8315,8315,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8319,8320,8320,8321,8320,8321,8321,8322,8321,8322,8322,8323,8322,8318,8318,8319,8319,8316,8316,8316,8317,8317,8317,8317,8318,8318,8318,8318,8318,8319,8320,8319,8320,8320,8321,8321,8303,8304,8304,8305,8305,8306,8306,8307,8307,8308,8308,8308,8308,8309,8309,8310,8310,8311,8311,8311,8312,8312,8313,8313,8314,8314,8315,8315,8315,8315,8316,8316,8317,8317,8318,8318,8319,8319,8320,8319,8320,8320,8321,8321,8322,8322,8323,8323,8324,8320,8320,8321,8321,8322,8322,8323,8323,8324,8324,8325,8325,8326,8322,8322,8322,8322,8323,8323,8324,8324,8325,8325,8326,8326,8327,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8343,8343,8344,8344,8345,8345,8345,8346,8345,8346,8346,8347,8347,8348,8348,8349,8349,8348,8349,8349,8350,8350,8350,8350,8351,8351,8351,8351,8352,8351,8352,8352,8353,8353,8353,8353,8354,8354,8354,8354,8326,8327,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8334,8333,8334,8334,8335,8335,8336,8336,8336,8337,8337,8338,8338,8339,8339,8340,8340,8341,8341,8342,8342,8342,8342,8342,8343,8343,8344,8344,8345,8345,8346,8346,8347,8347,8348,8348,8349,8349,8349,8350,8350,8350,8350,8350,8351,8351,8351,8351,8352,8351,8352,8352,8352,8352,8352,8353,8353,8354,8353,8354,8354,8355,8355,8355,8355,8356,8355,8356,8356,8357,8356,8357,8357,8358,8307,8306,8307,8307,8308,8308,8309,8309,8310,8310,8310,8311,8311,8311,8311,8312,8312,8313,8313,8314,8314,8315,8315,8316,8317,8317,8318,8318,8319,8319,8320,8319,8319,8320,8320,8321,8321,8322,8322,8323,8323,8324,8324,8324,8325,8325,8326,8326,8326,8326,8327,8327,8328,8328,8329,8329,8330,8330,8331,8331,8332,8332,8333,8333,8333,8333,8334,8334,8335,8335,8336,8336,8336,8337,8337,8338,8338,8339};

	for(int i=0; i<sizeof(a)/sizeof(uint64); ++i){
		trend.AddSample(a[i]);
	}
	std::cout<<trend.CalcIncreasingTrend();
}

void TestSim()
{
	//uint32 x[] = {390,195,97,487,994,47};
	//uint32 y[] = {25,24,28,29,29,30};

	//uint32 x[] = {464,250,131,65.5,35.7,17.6,9.77,5.12,2.97,1.66,846,2.62,2.86,2.92,2.93};
	//uint32 y[] = {45,47,48,44,50,43,46,40,42,48,37,44,40,38,40};

	uint32 x[] = {9552527,7329546,3932160,2002780,1016832,508928,399360};
	uint32 y[] = {95,94,88,78,56,14,0};

	SimPearson sim;
	
	for(int i=0; i<sizeof(x)/sizeof(uint32); ++i){
		sim.AddSample(x[i], y[i]);
	}
	std::cout<<sim.IsCorrelated();
}

//void printMessages()
//{
//	LOG4CPLUS_TRACE(logger, "printMessages()");
//	LOG4CPLUS_DEBUG(logger, "This is a DEBUG message");
//	LOG4CPLUS_INFO(logger, "This is a INFO message");
//	LOG4CPLUS_WARN(logger, "This is a WARN message");
//	LOG4CPLUS_ERROR(logger, "This is a ERROR message");
//	LOG4CPLUS_FATAL(logger, "This is a FATAL message");
//}
//
//void TestLogLevel()
//{
//	logger.setLogLevel(TRACE_LOG_LEVEL);
//	std::cout << "*** calling printMessages() with TRACE set: ***" << std::endl;
//	printMessages();
//
//	logger.setLogLevel(DEBUG_LOG_LEVEL);
//	std::cout << "\n*** calling printMessages() with DEBUG set: ***" << std::endl;
//	printMessages();
//
//	logger.setLogLevel(INFO_LOG_LEVEL);
//	std::cout << "\n*** calling printMessages() with INFO set: ***" << std::endl;
//	printMessages();
//
//	logger.setLogLevel(WARN_LOG_LEVEL);
//	std::cout << "\n*** calling printMessages() with WARN set: ***" << std::endl;
//	printMessages();
//
//	logger.setLogLevel(ERROR_LOG_LEVEL);
//	std::cout << "\n*** calling printMessages() with ERROR set: ***" << std::endl;
//	printMessages();
//
//	logger.setLogLevel(FATAL_LOG_LEVEL);
//	std::cout << "\n*** calling printMessages() with FATAL set: ***" << std::endl;
//	printMessages();
//}
//
//void StreamingLog()
//{
//	LOG4CPLUS_WARN(logger,   "This is"
//		<< " a reall"
//		<< "y long message." << std::endl
//		<< "Just testing it out" << std::endl
//		<< "What do you think?");
//	LOG4CPLUS_WARN(logger, "This is a bool: " << true);
//	LOG4CPLUS_WARN(logger, "This is a char: " << 'x');
//	LOG4CPLUS_WARN(logger, "This is a short: " << (short)-100);
//	LOG4CPLUS_WARN(logger, "This is a unsigned short: " << (unsigned short)100);
//	LOG4CPLUS_WARN(logger, "This is a int: " << (int)1000);
//	LOG4CPLUS_WARN(logger, "This is a unsigned int: " << (unsigned int)1000);
//	LOG4CPLUS_WARN(logger, "This is a long(hex): " << std::hex << (long)100000000);
//	LOG4CPLUS_WARN(logger, "This is a unsigned long: " 
//		<< (unsigned long)100000000);
//	LOG4CPLUS_WARN(logger, "This is a float: " << (float)1.2345);
//	LOG4CPLUS_WARN(logger, "This is a double: " 
//		<< std::setprecision(15) 
//		<< (double)1.2345234234);
//	LOG4CPLUS_WARN(logger, "This is a long double: " 
//		<< std::setprecision(15) 
//		<< (long double)123452342342.342);
//}
#define NETDECT_VERSION "0.1"

const char VERSION[] =\
"netdect version " NETDECT_VERSION "\n";

const char USAGE[] = "\
Usage: Usage: netdect [-s|-c host] [options] [-h] [-v]\n\
\n\
Client/Server:\n\
-p,     #          server port to listen on/connect to\n\
\n\
Server specific:\n\
-s,                run in server mode\n\
\n\
Client specific:\n\
-c,     <host>     run in client mode, connecting to <host>\n\
-b,     #[KM]      bandwidth to send at in bits/sec\n\
-l,     #          length of packet size in Bytes\n\
-m      #          max segement size, probe MTU(default 1000)\n\
-n,     #          sample count\n\
-o,                run once with the specific settings, with no iterative probing\n\
-t,     #          time in seconds to probing\n\
-u,     #          send udp packets\n\
-P,                using PacketPair model\n\
\n\
Miscellaneous:\n\
-h,                print this message and quit\n\
-v,                print version information and quit\n\
\n\
[KM] Indicates options that support a K or M suffix for kilo- or mega-\n\
\n";

const char options[] = "b:c:hl:m:n:op:st:uvP";

bool ParseOpt(int argc, char **argv, NDTSettings& settings)
{
	bool ret = true;
	while(1) {
		int c = getopt(argc, argv, options);
		if(c == -1) break;

		switch(c)
		{
		case 'b': 
			settings.m_bw_limit = byte_atoi(optarg);
			break;

		case 'c': 
			settings.m_app_mode = Mode_Client;
			settings.m_host = optarg;
			break;

		case 'h': 
			printf(USAGE);
			ret = false;
			break;

		case 'l': 
			settings.m_len = atoi(optarg);
			break;

		case 'm': 
			settings.m_mss = atoi(optarg);
			break;

		case 'n': 
			settings.m_samples = atoi(optarg);
			break;

		case 'o':
			settings.m_bRunOnce = true;
			break;

		case 'p': 
			settings.m_port = atoi(optarg);
			break;

		case 's': 
			settings.m_app_mode = Mode_Server;
			break;

		case 't': 
			settings.m_probeTime = static_cast<float>(atof(optarg));
			break;

		case 'u': 
			settings.m_bUdp = true;
			break;

		case 'v': 
			printf(VERSION);
			ret = false;
			break;

		case 'P':
			settings.m_bPacketPair = true;
			break;
		}
	}

	return ret;
}

NDTSettings g_settings;

int main(int argc, char **argv)
{

	//BasicConfigurator config;
	//config.configure();

	//PropertyConfigurator::doConfigure("log.cfg"); 
	LOG4CPLUS_INIT("log.cfg");

	//TestTrend();
	//return 0;

	//TestSim();
	//return 0;

	//TestLogLevel();
	//StreamingLog();

	//NDTSettings settings;
	if( !ParseOpt(argc, argv, g_settings) ){
		return 0;
	}

	NtdTime::Instance()->Init();
	AsynEventFramework::Instance()->Init();

	//Old code
	//if(g_settings.m_app_mode == Mode_Client ){
	//	//RunClient(g_settings.m_bUdp, g_settings.m_host, 
	//	//	g_settings.m_port, static_cast<uint32>(g_settings.m_bw_limit));
	//	BWProbe * pProbe = new BWProbe(static_cast<uint32>(g_settings.m_bw_limit), 10*1024, 20*1024);
	//	pProbe->Run(g_settings.m_host, g_settings.m_port);
	//}else if(g_settings.m_app_mode == Mode_Server){
	//	RunServer(g_settings.m_port);
	//}else{
	//	assert(false);
	//	return 0;
	//} 

	LOG4CPLUS_DEBUG(g_logger, "----------begin new run-----------");

	//new code
	if(g_settings.m_app_mode == Mode_Client ){
		//if( g_settings.m_bUdp ){
		//	SocketAddress sa;
		//	UDPPort * udpPort = new UDPPort(sa);
		//	SocketAddress remote_addr(g_settings.m_host, g_settings.m_port);
		//	Connection * pConn = udpPort->CreateConnection(remote_addr);
		//	//pConn->SetProbingInterval(INT_MAX);
		//}
		//
		//{
		//	SocketAddress sa;
		//	TCPPort * tcpPort = new TCPPort(sa);
		//	SocketAddress remote_addr(g_settings.m_host, g_settings.m_port);
		//	Connection * pConn = tcpPort->CreateConnection(remote_addr);
		//}

		SocketAddress remote_addr(g_settings.m_host, g_settings.m_port);

		DumpSender * pSenderUdp1 = new DumpSender(IConnection::PROTO_UDP, remote_addr);
		//DumpSender * pSenderUdp2 = new DumpSender(IConnection::PROTO_UDP, remote_addr);
		//DumpSender * pSenderUdp3 = new DumpSender(IConnection::PROTO_UDP, remote_addr);
		DumpSender * pSenderTcp1 = new DumpSender(IConnection::PROTO_TCP, remote_addr);
		//DumpSender * pSenderTcp2 = new DumpSender(IConnection::PROTO_TCP, remote_addr);

		pSenderUdp1->SetRateLimit(50*1024);//
		//pSenderUdp2->SetRateLimit(2.5*1024*1024);//500*1024
		//pSenderUdp3->SetRateLimit(0);//1024*1024
		pSenderTcp1->SetRateLimit(0);
		//pSenderTcp2->SetRateLimit(50*1024);

		//SocketAddress another_remote_addr("173.39.168.163", g_settings.m_port);
		//DumpSender * pSenderUdp4 = new DumpSender(IConnection::PROTO_UDP, another_remote_addr);
		//pSenderUdp4->SetRateLimit(500*1024);
		//DumpSender * pSenderTcp4 = new DumpSender(IConnection::PROTO_TCP, another_remote_addr);
		//pSenderTcp4->SetRateLimit(100*1024);

		//if( g_settings.m_bUdp ){
		//	DumpSender * pSenderUdp = new DumpSender(IConnection::PROTO_UDP, remote_addr);
		//	pSenderUdp->SetRateLimit(g_settings.m_bw_limit);
		//}else{
		//	DumpSender * pSenderTcp = new DumpSender(IConnection::PROTO_TCP, remote_addr);
		//	pSenderTcp->SetRateLimit(g_settings.m_bw_limit);
		//}
	}else if(g_settings.m_app_mode == Mode_Server){
		DisposeConnListener * pDisposer = new DisposeConnListener();
		SocketAddress sa;
		sa.SetPort(g_settings.m_port);
		UDPPort * udpPort = new UDPPort(sa);
		udpPort->AddConnListener(pDisposer);
		TCPPort * tcpPort = new TCPPort(sa);
		tcpPort->AddConnListener(pDisposer);

		//wait for connection
	}else{
		assert(false);
		return 0;
	} 

	AsynEventFramework::Instance()->Start();

	printf("done\n");
	return 0;
}
